我需要在google chrome浏览器中解析本地HTML文件。我已经读过这样做的一种方法,就是将HTML文件复制到SD卡中并加载它。我想要做的是,从MyProject / assets文件夹中打开Chrome浏览器中的HTML文件。
我目前正在通过网址加载html。在本地加载html会使页面加载更快。这就是我现在正在做的事情。
Intent i = new Intent("android.intent.action.MAIN");
i.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main"));
i.addCategory("android.intent.category.LAUNCHER");
i.setData(Uri.parse("http://www.example.com"));
startActivity(i);
我想做的是这样的事情
Intent i = new Intent("android.intent.action.MAIN");
i.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main"));
i.addCategory("android.intent.category.LAUNCHER");
i.setData(Uri.parse("MyProject/assets/htmlfile.html"));
startActivity(i);
答案 0 :(得分:1)
首先,摆脱setComponent()
电话。尊重您的用户,并允许他们使用他们想要的任何浏览器。此外,Chrome仅占Android设备的一小部分,这意味着您的应用会在大多数设备上崩溃。
其次,摆脱addCategory()
来电,并将Intent
行动替换为Intent.ACTION_VIEW
。
无论您从何处获取Web内容,所有这一切都应该完成,因为您当前的方法不正确且不可靠。
对于资产,其他应用无法通过Uri
直接读取您的资产。您可以创建一个为您的资源提供服务的ContentProvider
,但Chrome不支持content://
Uri
计划。事实上,Chrome仅支持http://
和https://
Uri
值来加载任意网址 - 它甚至似乎都不支持file://
。
如果要查看资产,请将其显示在WebView
窗口小部件中。在那里,您可以使用file:///android_asset/
网址来引用自己应用的资产。