通过意图在Android浏览器中加载本地html文件

时间:2013-08-25 16:10:30

标签: javascript android html google-chrome android-intent

我需要在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);

1 个答案:

答案 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/网址来引用自己应用的资产。