Android - Get real path of a .txt file selected from the file explorer

前端 未结 1 787
伪装坚强ぢ
伪装坚强ぢ 2020-11-21 05:33

I am working on an app where I want to be able to export and import some data from the app, on a .txt file. The minimum API of the app is 21.

The export part works w

1条回答
  •  -上瘾入骨i
    2020-11-21 06:06

    I didn't find how I can get the file from the Uri.

    There is no file. ACTION_OPEN_DOCUMENT and ACTION_GET_CONTENT do not open a file. They open a document. That document might be a file. It might not. That Uri might point to:

    • A local file on external storage
    • A local file on internal storage for the other app
    • A local file on removable storage
    • A local file that is encrypted and needs to be decrypted on the fly
    • A stream of bytes held in a BLOB column in a database
    • A piece of content that needs to be downloaded by the other app first
    • ...and so on

    How can I get the real path of the file ?

    You don't.

    If you wish to only accept files, integrate a file chooser library instead of using ACTION_OPEN_DOCUMENT or ACTION_GET_CONTENT. Just bear in mind that filesystem access to external storage is scheduled to go away with Android Q.

    If you use ACTION_GET_CONTENT, and the scheme of the Uri that you get is file, then getPath() will be a filesystem path.

    Otherwise, you need to understand that you have no idea where the document is coming from, and stop thinking in terms of "real path of the file". Use ContentResolver and openInputStream() to make a copy of the content to some file that you control, then work with that file.

    0 讨论(0)
提交回复
热议问题