通过我的应用程序,用户可以从文件管理器中选择一个文件并处理选择的文件(示例:PDF 文档)以进行其他步骤,例如打印或发送电子邮件。
为此,我使用下面的代码来显示意图,用户可以从中选择文件管理器选项中的文件。
protected void showFileChooser(String title, String type) {
Log.i(TAG, "FileChooserActivity showFileChooser(title,type)");
if (TextUtils.isEmpty(title)) title = getString(R.string.select_file);
if (TextUtils.isEmpty(type)) type = "*/*";
// Implicitly allow the user to select a particular kind of data
final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
// Specify the MIME data type filter (Must be lower case)
intent.setType(type.toLowerCase());
// Only return URIs that can be opened with ContentResolver
intent.addCategory(Intent.CATEGORY_OPENABLE);
// Display intent chooser
try {
startActivityForResult(
Intent.createChooser(intent, title),6384);
} catch (android.content.ActivityNotFoundException e) {
Log.i(TAG,"FileChooserActivity showFileChooser(title,type) Exception" +Log.getStackTraceString(e));
onFileError(e);
}
}
Android Kitkat 版本(4.4)中的问题:
使用上面的代码,我可以从 android 4.3 和除 Android 4.4 之外的所有 android 版本的文件管理器(即子文件夹和根文件夹)中访问所有文件。
在 Android 4.4 中,我可以从根文件夹访问文件,而我无法从子文件夹访问文件。我得到java.io.FileNotFoundException
了例外。
注意:我安装了Astro 文件管理器,通过它我可以访问 Android 4.4 中的根文件夹和子文件夹。但我无法通过 Android 的默认文件管理器访问子文件夹文件。