Android 如何创建在所有设备上查看本地HTML文件的意图
我真的不明白这怎么会如此困难,但我看到在过去的4年里有人问它,OP总是报告相同的问题/错误。我尝试过给出的各种解决方案,但没有一种在所有设备上都有效。我目前的代码是:Android 如何创建在所有设备上查看本地HTML文件的意图,android,html,android-intent,Android,Html,Android Intent,我真的不明白这怎么会如此困难,但我看到在过去的4年里有人问它,OP总是报告相同的问题/错误。我尝试过给出的各种解决方案,但没有一种在所有设备上都有效。我目前的代码是: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(htmlFile); intent.setData(uri); intent.setClass
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(htmlFile);
intent.setData(uri);
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
startActivity(intent);
这适用于我的摩托罗拉光子,我的三星Galaxy 10.1标签和我的HTC Droid DNA。但不适用于注释3或GS4。这两个设备都会崩溃,最有可能的情况是ActivityNotFoundException基于其他人报告的内容(我手头没有设备,报告此情况的用户也没有调试器)
我还在play store中看到许多应用程序,它们只是为了读取本地HTML文件。因此,似乎需要一些东西来创建关联,并允许浏览器查看本地HTML文件(在我的特定情况下位于下载目录中)。是否有人有一个可以在所有平台上运行的解决方案?只需使用:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse(url), "text/html");
startActivity(intent);
它更通用,因为您不需要定义浏览器包名称。这将打开一个提示,提示用户选择要使用哪个浏览器打开url。
但是它不会将您从
ActivityNotFoundException
中解救出来,因为您永远不知道用户是否在设备上安装了处理html文件的软件。您可以省略setClassName,我认为这是某些设备中ActivityNotFoundException的原因。实际上,我本来没有,但后来我的设备上出现了ActivityNotFoundException:)我想作为一名黑客,我可以尝试一种方法,如果出现这种情况,那么就尝试另一种方法,但我希望所有人都能有一个单一的解决方案…感谢回复EvZ。。。这至少没有崩溃,但它本身似乎也没有真正连接到浏览器。例如,在我的Droid DNA上,我安装了默认的Android浏览器和Chrome浏览器,但两者都没有出现在选择列表中。我只能选择“HTMLViewer”和“ES Note Editor”,但没有实际的浏览器。HTMLViewer有点不错,但是UI很糟糕……我应该注意到,在我的Photon(Android 2.3.4)上,“浏览器”是选择之一(除了HTMLViewer和ES note Editor)。。。但在我较新的设备(4.0.4和4.2.2)上,没有列出浏览器。如果我能得到完整的列表,包括更新设备上的浏览器,这将是完美的。有什么想法吗?您可以尝试获取此处所述的已安装Web浏览器列表,然后根据已安装浏览器的软件包名称发送意图。这更复杂,但也是一种选择。谢谢你的想法。我会报告我最终的想法。祝你好运,别忘了和我们分享!