使用意图在浏览器中打开文件或共享它

时间:2011-12-17 18:45:46

标签: android android-intent

我正在创建一个处理文本文件的android应用程序。我希望我的用户能够使用电子邮件,Dropbox分享他们的文件......但我也希望他们能够在浏览器中打开它们,如果它们恰好是html文件。

我在单独执行这两个代码时没有任何问题。这些是共享文件的那个:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path));
startActivity(Intent.createChooser(intent, "Send File"));

这是在浏览器中打开文件的那个:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
intent.setData(Uri.parse("file://" + path);
startActivity(Intent);

我的问题是我不想事先询问用户他想要哪个选项。我希望意图选择器列出两种类型的操作。我尝试使用text / html而不是text / plain,但是当URI以http开头时,浏览器只会监听意图。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

在合并两个名册方面,你别无选择,只能自己做。

但是,您当前的两个实现都存在问题:

  • 对于无法处理text/plain的应用,EXTRA_STREAM会失败 - 您应该考虑使用Uri,或许指向ContentProvider您可以使文件可用,因为对数据Uri的支持会更常见。

  • 您的第二个将在此浏览器不存在的设备上崩溃。此外,您还假设此浏览器能够在所有版本的Android中始终加载file:// Uri值,这不是一个安全的假设。如果浏览器作者希望它加载本地文件,他们会在清单中添加对它的支持。如果您没有HTTP URL,请使用WebView小部件。任何专业级代码都不应在任何地方引用com.android