2013-08-25 46 views
1

我需要在Google Chrome浏览器中解析本地HTML文件。我已经读过这样做的一种方法,就是将HTML文件复制到SD卡中并加载它。我想要做的是,从MyProject/assets文件夹中的chrome浏览器中打开HTML文件。通过意图在Android浏览器中加载本地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); 

回答

1

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

二,甩掉addCategory()来电,并用Intent.ACTION_VIEW替换你的Intent动作。

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

对于资产,其他应用程序无法通过Uri直接读取您的资产。您可以创建一个ContentProvider服务您的资产,但Chrome不支持content://Uri方案。事实上,Chrome仅支持加载任意网址的http://https://Uri值 - 它似乎甚至不支持file://

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

+0

它必须在chrome上加载的原因是因为chrome提供了WebRTC功能。我尝试了WebView小部件,但我猜android浏览器不支持我需要浏览器执行的功能。因此setComponent()调用。有没有办法解决。 – earb

+0

@earb:“它必须加载在Chrome上的原因是因为Chrome提供了WebRTC功能” - 这不会解决用户是否需要Chrome或用户是否拥有Chrome。毕竟,至少根据维基百科,Mozilla Firefox和Opera Mobile也支持WebRTC。 “有没有办法解决这个问题” - 从Web上加载你的内容。或者,使用C/C++代码中的WebRTC本地API(请参阅http://www.webrtc.org/reference/getting-started)。 – CommonsWare

相关问题