有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用intent选择要在安卓中读取的文件

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    ACTION_PICK不拾取文件。它挑选内容。大多数时候,您都会得到一个带有content方案的Uri,并且不要求这是一个文件

    还要注意的是ACTION_PICK不使用MIME类型,并且需要一个Uri指向从何处拾取。如果您想按MIME类型进行选择,或者选择任何内容,ACTION_GET_CONTENTACTION_OPEN_DOCUMENT是更好的选择。这些也会给你一个content{}的回报

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

    • 不要使用Intent,而是使用a file-chooser library

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

    或者,直接使用InputStream