【问题标题】:Automatically open Intent Chooser for the file Android自动打开文件 Android 的 Intent Chooser
【发布时间】:2014-06-02 15:48:54
【问题描述】:

我想在android 中打开一个文件。我想要做的是,如果文件类型为Image,那么我想打开Intent Chooser,其中包含可以查看图像的应用程序,如果是视频类型,则使用可以查看视频的应用程序打开 Intent Chooser .我怎样才能做到这一点?

【问题讨论】:

标签: android file android-intent mime-types


【解决方案1】:

我找到了解决办法。我将它粘贴在这里,以便它可以帮助其他用户。

    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);之前,你应该添加这些行(如果没有找到打开文件的应用程序,则显示ToastPackageManager 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);
  • 好的。感谢您的建议!
  • 不应该是:file.getName().lastIndexOf(".") 而不仅仅是 indexOf 吗?
  • 我在 ClickListener 中我如何获得上下文?为了调用 context.startActivity(intent);
【解决方案2】:

您应该决定并知道文件是视频还是图像。您可以通过查看文件的扩展名来做到这一点。

之后你可以像这样打开视频:

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

【讨论】:

  • 你误解了我的问题。我不想只打开图像或视频。我希望无论我通过什么文件,意图选择器都会列出该文件的适当应用程序。
  • 好的,那么您只需要相应地更改类型参数即可。如果它是文本“text/*”,它应该是。我猜你不能自动做到这一点。在大多数文件浏览器中,他们将它们分类为文本、图像、视频并相应地打开它们。对于所有不属于某个类别的文件,他们会询问用户这是什么类型的文件。
  • 我找到了解决方案。看我的回答。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
相关资源
最近更新 更多