【发布时间】:2014-06-02 15:48:54
【问题描述】:
我想在android 中打开一个文件。我想要做的是,如果文件类型为Image,那么我想打开Intent Chooser,其中包含可以查看图像的应用程序,如果是视频类型,则使用可以查看视频的应用程序打开 Intent Chooser .我怎样才能做到这一点?
【问题讨论】:
标签: android file android-intent mime-types
我想在android 中打开一个文件。我想要做的是,如果文件类型为Image,那么我想打开Intent Chooser,其中包含可以查看图像的应用程序,如果是视频类型,则使用可以查看视频的应用程序打开 Intent Chooser .我怎样才能做到这一点?
【问题讨论】:
标签: android file android-intent mime-types
我找到了解决办法。我将它粘贴在这里,以便它可以帮助其他用户。
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(path);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = file.getName().substring(file.getName().lastIndexOf(".") + 1);
String type = mime.getMimeTypeFromExtension(ext);
intent.setDataAndType(Uri.fromFile(file), type);
context.startActivity(intent);
【讨论】:
context.startActivity(intent);之前,你应该添加这些行(如果没有找到打开文件的应用程序,则显示Toast:PackageManager manager = mActivity.getPackageManager(); List<ResolveInfo> info = manager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY); if(info.isEmpty()) Toast.makeText(mActivity, "No app found to open this file", Toast.LENGTH_SHORT).show(); else context.startActivity(intent);
您应该决定并知道文件是视频还是图像。您可以通过查看文件的扩展名来做到这一点。
之后你可以像这样打开视频:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(result), "video/*");
startActivity(intent);
还有这样的图片:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(result), "image/*");
startActivity(intent);
Android 系统会自动打开Intent Chooser。
【讨论】: