通过我的应用程序,用户可以从文件管理器中选择一个文件,并处理选择的文件(例如: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中的文件管理器(即子文件夹&root文件夹)和除Android 4.4之外的所有Android版本的所有文件。
在Android 4.4中,我可以从根文件夹访问文件,因为我无法从子文件夹访问文件。我将java.io.FileNotFoundException
视为例外。
注意: 我安装了Astro File Manager,通过这个我可以访问Android 4.4中的根文件夹和子文件夹。但我无法通过Androids默认文件管理器访问子文件夹文件。