WebView加載頁面的兩種方式——網絡頁面和本地頁面


WebView加載頁面的兩種方式

一、加載網絡頁面

  加載網絡頁面,是最簡單的一種方式,只需要傳入http的URL就可以,實現WebView加載網絡頁面

代碼如下圖:

二、加載本地頁面

  1、加載assets目錄下的HTML頁面:

加載assets目錄的頁面,大多數可以用來做頁面數據的存儲打包,這樣可以訪問 離線文件,不用去進行網絡請求,可以減少用戶數據流量的使用

示例代碼如下:

//加載assets目錄文件
webView.loadUrl("file:///android_asset/staticHtml.html");

在這里面,解釋一下引號里面每個字段的意思和作用:

  file字段,表示讀取本地文件,不讀取網絡文件。

  android_asset表示讀取當前應用的assets目錄下的文件

  staticHtml.html表示assets目錄下的HTML頁面

  2、加載緩存到本地的頁面

加載緩存到本地的頁面,這個主要可以用來做頁面的離線緩存

例如將html文件存儲到本地文件目錄下

    //文件存儲的本地文件夾路徑
        File filesDir = getFilesDir().getAbsoluteFile();
        //本地存儲的文件
        File destFile = new File(filesDir, "staticHtmlcopy.html");
        //將assets路徑下的文件copy到filesDir路徑下,注:此處也可以通過網絡訪問,對頁面進行存儲
        InputStream is = null;
        try {
            is = getAssets().open("staticHtml.html");
            if (destFile.exists()) {
                destFile.delete();
            }
            FileOutputStream out = new FileOutputStream(destFile);
            try {
                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = is.read(buffer)) >= 0) {
                    out.write(buffer, 0, bytesRead);
                }
            } finally {
                out.flush();
                try {
                    out.getFD().sync();
                } catch (IOException e) {
                }
                out.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        //拼接生成WebView使用的url地址
        String url="file://"+destFile.getAbsolutePath();
        webView.loadUrl(url);

 

注:一些網絡上直接抓取的頁面里面一些js可能存在跨域,或者相對路徑的情況,所以最好自己先寫一些簡單的頁面做測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM