Displaying Android asset files in a WebView?

后端 未结 2 445
生来不讨喜
生来不讨喜 2020-11-30 04:59

I have seen various discussions on the problem of serving WebView pages from assets, none of which seemed definitive.

I want to be able to use a webview to display h

相关标签:
2条回答
  • 2020-11-30 05:17

    Well, I found something that seems to work (on 1.6 and 2.2), in spite of a warning that it would recurse.

    I also discovered that a css style-sheet link inside the first and second page both work without the following intercept. Odd and it makes me a bit nervous. Thoughts?

    Here's the code:

    WebView wv = (WebView)this.findViewById(R.id.splashWebView);
    wv.setWebViewClient(new WebViewClient() {  
      @Override  
      public boolean shouldOverrideUrlLoading(WebView view, String url)  
      {  
        view.loadUrl(url);
        return true;
      }  
    }); 
    wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html");
    

    Here's the file contents:

    demo_welcome.html:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Demo Html</title>
        <link rel="stylesheet" type="text/css" href="demo.css" />
      </head>
      <body>
        <H1>Testing One Two Three</H1>
        <a href="test.html">CLICK HERE</a><p>
        <a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>
      </body>
    </html>
    
    test.html:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <link rel="stylesheet" type="text/css" href="test.css" />
        <title>Insert title here</title>
      </head>
      <body>
        <H1>TEST.HTML</H1>
      </body>
    </html>
    
    0 讨论(0)
  • 2020-11-30 05:42

    instead of loadUrl, try using the loadDataWithBaseURL method:

    wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, "");
    
    0 讨论(0)
提交回复
热议问题