如何让用户在Android中使用Intent选择本地文件?
问题描述:
我需要让用户从我的应用程序的本地存储中选择一个文件。现在我使用INTENT.ACTION_GET_CONTENT
来让用户选择文件,但它也提供了从云中选择URI的选项。获取URI文件后,我将其视为本地文件并执行各种操作(包括提取文件扩展名)。我如何让用户只选择本地文件?如何让用户在Android中使用Intent选择本地文件?
else if(menuItem.getItemId() == R.id.action_import_from_file){
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("*/*");
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT);
}
答
请尝试使用Intent.EXTRA_LOCAL_ONLY像intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
如果库应用程序在您的设备支持它,只有本地存储中的文件将被显示。如果图库应用程序不支持上述意图,则可以在检查图库应用程序返回的文件路径的文件长度后向用户显示错误消息。
答
尝试这种使用setType()
方法,并指定由用户选择什么文件类型
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("application/pdf|application/x-excel|text/csv");
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT);
你也可以使用MIME类型的数组像下面的代码
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
String[] types = {"application/x-excel/*", "application/csv/*",};
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT);
xlsx和csv文件是根据应用程序?我从Excel文件,CSV文件等导入数据集。 – ColonD
@ColonD check updated ans –