1. 程式人生 > >Android webview載入網頁

Android webview載入網頁

webview嘗試(一)線上載入網頁(例百度)

webview佈局很簡單xml如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layerType="software" />

</RelativeLayout>

對應的activity的Webview_try邏輯程式碼如下

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class Webview_try extends AppCompatActivity {
    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview_try);
        ActionBar actionBar = getSupportActionBar();
        if(actionBar != null) {
            actionBar.hide();
        }
        mWebView = (WebView) findViewById(R.id.webView1);
        // 設定WebView的客戶端
        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;// 返回false
            }
        });
        //baiduboxapp:
        //webView載入網頁後出現ERR_UNKNOWN_URL_SCHEME
        /*mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                try{
                    if(url.startsWith("baiduboxapp://")){
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                }catch (Exception e){
                    return false;
                }
                mWebView.loadUrl(url);
                return true;
            }
        });*/
        WebSettings webSettings = mWebView.getSettings();
        // 讓WebView能夠執行javaScript
        webSettings.setJavaScriptEnabled(true);
        // 讓JavaScript可以自動開啟windows
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        // 設定快取
        webSettings.setAppCacheEnabled(true);
        // 設定快取模式,一共有四種模式
        webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK);
        // 設定快取路徑
//        webSettings.setAppCachePath("");
        // 支援縮放(適配到當前螢幕)
        webSettings.setSupportZoom(true);
        // 將圖片調整到合適的大小
        webSettings.setUseWideViewPort(true);
        // 支援內容重新佈局,一共有四種方式
        // 預設的是NARROW_COLUMNS
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        // 設定可以被顯示的螢幕控制
        webSettings.setDisplayZoomControls(true);
        // 設定預設字型大小
        webSettings.setDefaultFontSize(12);

        // 設定WebView屬性,能夠執行Javascript指令碼
       // mWebView.getSettings().setJavaScriptEnabled(true);
        //3、 載入需要顯示的網頁
        mWebView.loadUrl("http://www.baidu.com/");
        ///4、設定響應超連結,在安卓5.0系統,不使用下面語句超連結也是正常的,但在MIUI中安卓4.4.4中需要使用下面這條語句,才能響應超連結
       // mWebView.setWebViewClient(new HelloWebViewClient());
    }
    // 設定回退監聽
    // 5、覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) ) {
            if (mWebView.canGoBack())
            {
               mWebView.goBack(); //goBack()表示返回WebView的上一頁面
                return true;
            }else
            {
                finish();
                return true;
            }

        }
        return false;
    }
}

出現和需要注意的點有
①設定退回監聽,沒有監聽的控制的話點選返回會直接退出
②網頁加載出來之後,點選網頁中的一些連線會出現ERR_UNKNOWN_URL_SCHEME此類錯誤,此時可以通過mWebView.setWebViewClient(new WebViewClient()來進行簡單的操作,讓非http的網頁連結出來
③適當配置顯示,這樣針對不同網頁不同手機顯示才能相對正常美觀


本人蔘考了https://www.2cto.com/kf/201609/548747.html