2013-09-21 118 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

相關問題