使用意图选择要在安卓中读取的文件



使用意图选择要在安卓中读取的文件我使用意图来获取我选择的文件路径,如下所示:

Intent inputFile = new Intent(Intent.ACTION_PICK);
inputFile.setType("*/*");
inputFile.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(inputFile.createChooser(inputFile, "Select csv"),1010);

但是收到的路径不使用 FileInputStream 来读取它。
例如:通过意图接收的路径是:/document/primary:File.csv
读取文件所需的路径是:/storage/emulated/0/File.csv

ACTION_PICK不选取文件。它选择内容。大多数时候,您将获得具有content方案的Uri,并且不需要这是一个文件。

另请注意,ACTION_PICK不使用 MIME 类型,并且确实需要一个Uri来指示从何处选择。如果要按MIME类型选择,或者选择任何内容,ACTION_GET_CONTENTACTION_OPEN_DOCUMENT是更好的选择。这些也会给你一个content Uri

如果需要文件,请执行以下任一操作:

  • 不要使用Intent,而是使用文件选择器库

  • 正如 greenapps 建议的那样,使用ContentResolveropenInputStream()来获取内容的InputStream,然后将该内容写入您控制的某些文件(例如,将字节复制到FileOutputStream(

或者,直接使用InputStream

最新更新