2015-04-14 25 views
0

我正在保存WebView的內容,以便在下次啓動我的應用程序時顯示該內容。我遵循this這幾乎是我想要的。WebView - 下載javascript,css和圖像

@JavascriptInterface 
     public void setHtml(String html) { 
      SharedPreferences settings = getSharedPreferences("preferences", MODE_PRIVATE); 
      this.html = html; 
      SharedPreferences.Editor prefEditor = settings.edit(); 
      prefEditor.putString("ActivityHtml", html); 
      prefEditor.commit(); 
      Log.d("html", html); 
      setChanged(); 
      notifyObservers(html); 
     } 

然後:

view.loadDataWithBaseURL("", settings.getString("ActivityHtml", ""), "text/html", "UTF-8", ""); 

然而,當我看到在日誌中的HTML中,Javascript和CSS有這樣的服務器的路徑:

<link href="/Content/Sass/style_sass.css?version=1.0.1.15" rel="stylesheet"> 
<img src="../Images/magnify_black.png" /> 

現在因爲如此,纔有了文本內容顯示,而圖像不顯示。就像這樣:

enter image description here

我怎麼可能會在HTML的圖像,CSS和JavaScript?

只是告訴我現在已經有以下幾點:

view.getSettings().setLoadsImagesAutomatically(true); 
view.getSettings().setJavaScriptEnabled(true); 
+3

您沒有提供基本URL,因此WebView不知道在哪裏查找資產。他們是否在APK中的「資產」文件夾中?如果是這樣,'view.loadDataWithBaseURL(「file:/// android_asset」,...'。如果這些資源沒有被下載到任何地方,您需要使用原始網站的URL作爲基礎 – CodingIntrigue

+0

嘗試從資產:通過使用'webView.loadDataWithBaseURL(「file:/// android_asset /」,yourdata,「text/html」,「UTF-8」,null);' –

+0

@RGraham:你讓我:)請發表一個答案。 – Nitish

回答

0

我想你應該從資產或SD卡上加載CSS,就像這樣:

WebView wv = new WebView(context); 
    StringBuilder html = new StringBuilder(); 
    html.append("<html>"); 
    html.append("<head>"); 
    html.append("<link rel=stylesheet href='css/style.css'>"); 
    html.append("</head>"); 
    html.append("<body>"); 
    html.append("<h1>Some Heading</h1>"); 
    html.append("<p>Some HTML content</p>"); 
    html.append("<p><img style='width: 100%;' src='spidermen.jpg' /></p>"); 
    html.append("</body></html>"); 
    wv.loadDataWithBaseURL("file:///android_asset/", html.toString(), "text/html", "UTF-8", ""); 

,並把文件放到正確地點。

webview

0

使用

view.getSettings().setJavaScriptEnabled(true); 
view.getSettings().setBuiltInZoomControls(true); 
view.getSettings().setDomStorageEnabled(true); 
view.requestFocus(View.FOCUS_DOWN); 
view.setWebChromeClient(new WebChromeClient()); 
view.loadDataWithBaseURL("file:///android_asset/",settings.getString("ActivityHtml", ""),"text/html", "utf-8", null); 

,你需要在本地把它放在你的資產文件夾中的CSS部分。