2013-09-21 79 views
1

这段代码加载的网页不是本地工作正常,但当我把本地文件存在错误:文件未找到。 我使用cocos2dx和file.java包含活动我有一个功能,使:Android加载本地html文件并在网页浏览器中显示

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在资源文件夹中,我可以看到它在Eclipse 的资产文件夹我怎样才能在浏览器中显示该网页? 谢谢

回答

1

这里有几个问题。

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

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

第三,文件是“在资源文件夹中”,或者是“在资产文件夹中”,或者您有两个文件副本。资源和资产虽然相似,但并不是一回事。第四,你将很难找到一个能够从你的项目的资源或资源中读取文件的浏览器。资产根本不可能;找到一个可以从你的原始资源中读取HTML的浏览器是不可能的。

或者:

  • 使用WebView和自己显示出来,或

  • 写你自己的ContentProvider以满足您的HTML出你的项目的assets/,或

  • 尝试my StreamProvider对于可以从您的项目的assets/中提取文件的“罐头”ContentProvider

  • 将文件复制到外部存储设备(例如,getExternalFilesDir()),并试图让浏览器从那里

只有第一个是保证工作加载它。其他人将根据用户支配的浏览器功能而有所不同。

+0

我试过这个:\t Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(“file:///assets/iCD_credits_it.html”)); i.setClassName(“com.android.browser”,“com.android.browser.BrowserActivity”); me.startActivity(i); – sefiroths

+0

@sefiroths:这不是我在答案中概述的解决方案之一,而且您可能发现它不起作用。 – CommonsWare

+0

其实它没有工作......我认为这可能只是因为它是错误的路径...然而 如何添加webview而不添加xml在cocos2dx图层的顶部?添加一个按钮只能测试不工作: \t LinearLayout layout = new LinearLayout(me); layout.setOrientation(LinearLayout.VERTICAL); //也可以通过android在xml中完成:orientation =“vertical” ... – sefiroths

相关问题