1

此代码加载非本地网页工作正常,但是当我放置本地文件时出现错误:找不到文件。我正在使用 cocos2dx,在包含 Activity 的 file.java 中,我有一个函数:

File file=new File("/android_asset/iCD_credits_it.html");
Uri uri = Uri.fromFile(file);
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setDataAndType(uri, "text/html");
browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
//browserIntent.setData(uri);
me.startActivity(browserIntent);

我已将 iCD_credits_it 放在 Resource 文件夹中,我可以在 eclipse 的 assets 文件夹中看到它 如何在浏览器中显示该网页?谢谢

4

1 回答 1

1

这里有几个问题。

首先,设备的根目录下没有/android_asset目录,更不用说里面有iCD_credits_it.html文件了。

其次,您setClassName()将导致此代码在许多设备上崩溃。不要硬编码包名和类名,除非你只打算在你自己的设备上运行你的应用程序。

第三,文件要么在“资源文件夹”,要么在“资产文件夹”,或者你有两个文件副本。资源和资产虽然相似,但并不是一回事。

第四,您将很难找到能够从项目的资源或资产中读取文件的浏览器。资产根本不可能;找到一个可以从您的原始资源中读取 HTML 的浏览器是不可能的。

任何一个:

  • 使用 aWebView并自己显示,或者

  • 编写您自己的ContentProvider以从您的项目中提供 HTML 服务assets/,或者

  • 试试StreamProvider的“罐头” ContentProvider,它可以从你的项目中提供文件assets/,或者

  • 将文件复制到外部存储(例如,getExternalFilesDir())并尝试让浏览器从那里加载它

只有第一个保证工作。其他的将根据用户可以使用的浏览器的功能而有所不同。

于 2013-09-21T21:00:11.687 回答