1

我需要在 google chrome 浏览器中解析本地 HTML 文件。我已经读过这样做的一种方法,就是将 HTML 文件复制到 SD 卡中并加载它。我想要做的是,在 chrome 浏览器中从 MyProject/assets 文件夹中打开 HTML 文件。

我目前正在通过 url 加载 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);

4

1 回答 1

1

首先,摆脱setComponent()电话。尊重您的用户,并允许他们使用他们想要的任何浏览器。此外,Chrome 仅在一小部分 Android 设备上运行,这意味着您的应用会在大多数设备上崩溃。

其次,摆脱addCategory()呼叫,并将您的Intent操作替换为Intent.ACTION_VIEW

无论您从何处获取 Web 内容,所有这些都应该完成,因为您当前的方法是不正确且不可靠的。

关于资产,其他应用程序无法通过Uri. 您可以创建一个ContentProvider为您的资产提供服务的方案,但 Chrome 不支持该content:// Uri方案。事实上,Chrome 只支持加载任意 URLhttp://https:// Uri值——它甚至似乎都不太支持file://

如果要查看资产,请将其显示在WebView小部件中。在那里,您可以使用file:///android_asset/URL 来引用您自己的应用程序资产之一。

于 2013-08-25T16:22:18.543 回答