Android:下载文件然后显示应用程序选择器打开它?

标签 android android-intent

所以我一直在四处寻找,似乎无法弄清楚,或者可能是因为我在模拟器中?

基本上我正在尝试下载一个文件,然后显示一个应用程序选择器,以便用户可以自由选择要在其中打开它的应用程序。

我不确定的一件事是,您如何为 Intent 制作通配符 mime 类型?我的意思是,例如下载的文件可以作为附件由邮件客户端共享和打开,所以它真的应该支持任何东西。

为了简洁起见,下载代码工作和下载,所以假设下载完成并且文件在缓存目录中:

Intent install = new Intent(Intent.ACTION_VIEW);

// Create intent to show chooser
Intent chooser = Intent.createChooser(install, "Open in...");

// Verify the intent will resolve to at least one activity
if (install.resolveActivity(_progressDialog.getContext().getPackageManager()) != null) {
    _progressDialog.getContext().startActivity(chooser);
}

我做错了什么吗?

最佳答案

我相信您还需要提供 MIME 类型,例如与

intent.setDataAndType(Uri, mimetype);

mimetype 类似于“text/plain”。您可以使用特殊方法或查找表从文件扩展名、标题中提取它(我现在不记得它是如何完成的)。

但这至少在模拟器中不起作用。

关于Android:下载文件然后显示应用程序选择器打开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23844870/

相关文章:

java - getParcelableArrayExtra 空指针

android - 如何使用相同的变量从 2 个不同的类接收额外的 Intent ?

java - 如何将文本逐行设置为多行编辑文本

android - FirebaseInstanceId token 检索失败 SERVICE_NOT_AVAILABLE

android - 使用 Intent 时不显示电子邮件正文

java - Volley 解析错误 org.json.JSONException : End of input at character 0 of

android - 添加测试设备不工作

android - 不幸的是,当我使用 Sugar ORM 时,我的应用程序停止了

Android 通过 sysfs 获取以毫安为单位的充电率

android - stopService(intent_with_extras) - 你如何从服务中读取这些额外内容以停止?