2012-01-31 43 views
5

本地HTML文件我放在的.html(其中包括了的.js的網站鏈接)文件中的入資產,現在我試圖加載網址的WebView加載它包含的.js作爲<script src>

mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setPluginsEnabled(true); 
     mWebView.getSettings().setAllowFileAccess(true); 

     mWebView.loadUrl("file:///android_asset/anim1.html"); 

這裏我無法播放.js文件,等待正面迴應。

+0

感謝您的編輯工作。 – 2012-01-31 12:19:43

回答

7

首先,我認爲真的不想想要從資產中訪問HTML和JavaScript文件,因爲一旦應用打包並簽名,資產就不能(也不應該)更新。這意味着,使用資產中的HTML和JavaScript,您無法更新它們。解決這個問題的方法是將HTML和JavaScript保存在內部或外部存儲器中,並從那裏使用它。其次,如果您使用我剛剛解釋的方法,則不能再使用WebView.loadUrl()方法,但是您需要使用WebView.loadDataWithBaseUrl()方法。就像這樣:

webView.loadDataWithBaseURL("http://some_url/", "some_data", "text/html", "utf-8", null); 

那麼, 「some_data」 將嘗試加載HTML頁面,如this previous SO answer看到。當它嘗試加載JavaScript資源時,如/scripts/lib.js,它將被解析爲http://some_url/scripts/lib.js,並且WebView將嘗試加載該資源。當然它不能,這就是爲什麼你(在Java中)需要擴展WebViewClient類,併爲shouldInterceptRequest(WebView wv, String url)方法提供實現。

當試圖在網頁中提取任何資源時,應調用「InterceptorRequest」,並將其返回值用作資源。

+0

如果我們使用內部存儲,我們如何更新文件? – eugene 2015-11-16 03:46:21

相關問題