Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何创建在所有设备上查看本地HTML文件的意图_Android_Html_Android Intent - Fatal编程技术网

Android 如何创建在所有设备上查看本地HTML文件的意图

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

我真的不明白这怎么会如此困难,但我看到在过去的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.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浏览器列表,然后根据已安装浏览器的软件包名称发送意图。这更复杂,但也是一种选择。谢谢你的想法。我会报告我最终的想法。祝你好运,别忘了和我们分享!