Android - 如何检查文件管理器是否可用?
Android - How to check if file manager is available?
我的应用程序使用自定义类型的文件,可以保存到外部存储器并共享。
我想使用文件选择器选择一个文件并加载它。这是我的代码:
Uri uri = Uri.fromFile("path/to/folder");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
try {
startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
} catch (android.content.ActivityNotFoundException e) {
Toast.makeText(this, "Error fileChooser",Toast.LENGTH_SHORT).show();
Log.e("Dan", "onOptionsItemSelected: Error filechooser ActivityNotFoundException", e);
}
此代码在我的 genymotion 模拟器和我的 CyanogenMod 上的 Nexus 4 上绝对完美运行,并调用文件管理器浏览到该文件夹。
但是当我试戴我全新的 LG G4 时,它不起作用。
最大的问题是我没有收到任何错误消息,只有一个标题正确的文件选择器和一条消息 "No app can perform this action".
如何检查文件选择器是否可用? (如果需要,提供一个简单的替代方案)
试试这个:
PackageManager packageManager = getActivity().getPackageManager();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.GET_ACTIVITIES));
然后,检查list
的大小,如果为0,则没有文件资源管理器。
我的应用程序使用自定义类型的文件,可以保存到外部存储器并共享。
我想使用文件选择器选择一个文件并加载它。这是我的代码:
Uri uri = Uri.fromFile("path/to/folder");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
try {
startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
} catch (android.content.ActivityNotFoundException e) {
Toast.makeText(this, "Error fileChooser",Toast.LENGTH_SHORT).show();
Log.e("Dan", "onOptionsItemSelected: Error filechooser ActivityNotFoundException", e);
}
此代码在我的 genymotion 模拟器和我的 CyanogenMod 上的 Nexus 4 上绝对完美运行,并调用文件管理器浏览到该文件夹。
但是当我试戴我全新的 LG G4 时,它不起作用。 最大的问题是我没有收到任何错误消息,只有一个标题正确的文件选择器和一条消息 "No app can perform this action".
如何检查文件选择器是否可用? (如果需要,提供一个简单的替代方案)
试试这个:
PackageManager packageManager = getActivity().getPackageManager();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.GET_ACTIVITIES));
然后,检查list
的大小,如果为0,则没有文件资源管理器。