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

时间:2014-05-24 12:10:11

标签: android android-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);
}

我做错了吗?

2 个答案:

答案 0 :(得分:0)

我相信你也需要提供mime类型,例如与

intent.setDataAndType(Uri, mimetype);

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

但这至少在模拟器中无法正常工作。

答案 1 :(得分:0)

您可以使用以下意图来附加文件&发送电子邮件

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@example.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, "body text");
File root = Environment.getExternalStorageDirectory();
File file = new File(root, xmlFilename);
if (!file.exists() || !file.canRead()) {
    Toast.makeText(this, "Attachment Error", Toast.LENGTH_SHORT).show();
    finish();
    return;
}
Uri uri = Uri.parse("file://" + file);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send email..."));