Android webview 屬性設置

Android 用webview加載連接的時候有時會出現連接在瀏覽器裏一切正常,但用webview加載連接會出現一些問題,如不能彈出彈框,圖片缺失等,出現這種情況是因爲沒有對webview的相應屬性進行設置,而且由於Android系統的級別不一樣對連接的反應也不同,5.0,6.0,7.0的手機有時需要特殊處理,以下是我用webview的過程中總結的一些屬性設置。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }    //當加載Html裏有https和http混合的時候,5.0以上的手機需要開啓混合模式纔可以正常加載圖片如當html是https的連接但連接裏的圖片是http的,這時候5.0以上的手機會加載不出來http圖片,需要開啓此設置才能正常顯示圖片。
mWebView.getSettings().setJavaScriptEnabled(true);  //可以夾雜javaScript
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); //設置允許js彈出alert對話框。
mWebView.getSettings().setSupportZoom(true);//是否可以縮放,默認是true
mWebView.getSettings().setBuiltInZoomControls(true);//是否可以顯示縮放按鈕,默認是false
mWebView.getSettings().setUseWideViewPort(true);//設置此屬性,可任意比例縮放,大視圖模式
mWebView.getSettings().setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解決網頁自適應問題
mWebView.getSettings().setAppCacheEnabled(true);//是否使用緩存
mWebView.getSettings().setDomStorageEnabled(true);//DOM Storage
        //  mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);  //設置 緩存模式
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON); //播放視頻
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //設置不用緩存
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
mWebView.getSettings().setGeolocationEnabled(true); //設置可以定位
mWebView.setWebChromeClient(new MyWebChromeClient());
 
mWebView.setWebViewClient(new WebViewClient() { //在webViewClient裏對url進行處理

    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }


    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        return false;
    }


    @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }


    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }
});
//設置下載監聽在上一篇博客中已經詳細說過了,這裏就不再說了
mWebView.setDownloadListener(new MyDownLoadListener(MainActivity.this));
mWebView.loadUrl(h5Path); //要加載連接
  
public class MyWebChromeClient extends WebChromeClient {
/**
 * 設置網頁可以請求位置信息,因爲有的手機加載連接後不會彈出請求位置信息的彈框,用戶看不到沒有點擊導致網頁一直處於加 *載中而加載不出頁面。
 * @param origin
 * @param callback
 */
    @Override
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        callback.invoke(origin, true, true);
        super.onGeolocationPermissionsShowPrompt(origin, callback);
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章