如何让用户选择他想要用来打开文件的应用程序?

Posted

技术标签:

【中文标题】如何让用户选择他想要用来打开文件的应用程序?【英文标题】:How can I ask the user to select the app he wants to use to open a file? 【发布时间】:2017-02-18 04:02:26 【问题描述】:

我正在尝试为 android 制作自己的文件管理器。 我想知道如何要求用户选择他想要使用的应用程序打开文件。比如当你打开一个 .doc 文件并且你有一堆 .doc 文件阅读器时。如何检索用户可用于读取/打开文件的应用列表?

【问题讨论】:

【参考方案1】:

试试这个代码

Uri uri = Uri.parse("Your file name: //"+file.getAbsolutePath());
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
String type = "application/msword";
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);

【讨论】:

【参考方案2】:

您应该为您的目的使用隐式意图。下面是提供播放视频文件选项的示例代码

Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
    startActivity(Intent.createChooser(intent, "Complete action using"));

希望对你有所帮助。有关更多详细信息,您可以参考以下链接中提到的 android 官方文档

https://developer.android.com/training/basics/intents/sending.html#AppChooser

【讨论】:

当我点击一个 png 文件时。它不显示应用程序列表中的图库。如果文件类型是 png,我喜欢如何制作它,应用程序列表用于打开图像。当它是 .doc 时,它会显示文档阅读器?对不起。我真的不擅长编程。编辑:哦,我认为这是 setDataAndType 代码。哈哈。我去试试 嗯,如果您发现任何问题,请尝试告诉我 我使用了这个代码Intent intent = new Intent(Intent.ACTION_VIEW); String title = getResources().getString(R.string.chooser_title); intent.setType("*/*"); Intent chooser = Intent.createChooser(intent, title); 它显示了不同的一堆应用程序。这就是我能做的。我不知道如何让它只显示图像的画廊应用程序和 .doc 和 .pdf 文件的文件阅读器。我太笨了哈哈【参考方案3】:

我觉得你可以试试这个

Intent in= new Intent(Intent.ACTION_MAIN);
in.setComponent(new ComponentName("com.package.address","com.package.address.MainActivity"));
startActivity(in);

【讨论】:

以上是关于如何让用户选择他想要用来打开文件的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何让用户从 Flutter 应用程序下载/保存文件?

有选择地禁用进程功能

如何打开启动器的小部件选择器?

如何保存StorageFile以便以后使用?

如何以编程方式关闭通知托盘

让其他用户调试我的 iOS 应用