2

我有一个由我试图加载到意图中的静态本地文件组成的网站。它使用 JavaScript,所以我的印象是我必须使用意图而不是 webview。

该文件位于“assets/site_files/index.html”。这是我尝试使用的代码:

Uri path = Uri.parse("file:///android_asset/site_files/index.html");
Intent intent = new Intent(Intent.ACTION_VIEW, path);
startActivity(intent);

应用程序在启动 Intent 时崩溃,这是控制台中的最后一个条目:

ActivityManager: Starting: Intent

如果我在 Web 服务器上加载站点而不是尝试加载本地版本,该应用程序可以正常工作。以下工作完美:

Uri path = Uri.parse("http://www.domain.com/test_app_static/index.html");
Intent intent = new Intent(Intent.ACTION_VIEW, path);
startActivity(intent);

但是,我需要它在本地运行,这样用户就可以在没有互联网连接的情况下运行它。我环顾四周并尝试了几种不同的解决方案,但在将本地 html 文件加载到意图中的特定情况下,它们都不适合我。请帮忙!

4

2 回答 2

1

正确的网址是file:///android_asset/site_files/index.html。应用程序可能崩溃的原因是asset文件只能由您的应用程序访问。因此,您需要将该数据显示在WebView.

于 2012-11-02T07:27:56.967 回答
1

将 index.html 页面复制到您的应用程序 data( data/data/<your.package>) 文件夹。您可以使用 api Activity.getDir()获取位置,并将MODE_WORLD_READABLE作为参数传递,以便其他应用程序可以从您的应用程序数据文件夹中读取文件。现在您可以将此路径作为intent. 请记住,其他应用程序无法访问您的assets文件夹。

于 2012-11-02T07:39:52.270 回答