webview 常用 settings 配置

 

        webSetting.setAllowContentAccess(true); //是否允許在WebView中訪問內容URL(Content Url)  默認允許

        webSetting.setAllowFileAccess(true); //  是否允許訪問文件,默認允許。注意,這裏只是允許或禁止對文件系統的訪問

        webSetting.setAllowFileAccessFromFileURLs(true);// 是否允許運行在一個URL環境(the context of a file scheme URL)中的JavaScript訪問來自其他URL環境的內容,爲了保證 安全,應該不允許

        webSetting.setAppCacheEnabled(true); // 應用緩存API是否可用,默認值false 結合setAppCachePath(String)使用。

        String  appCacheDir  =  this .getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();

        webSetting.setAppCachePath(appCacheDir); //設置應用緩存文件的路徑。爲了讓應用緩存API可用,此方法必須傳入一個應用可寫的路徑。 該方法只會執行一次,重複調用會被忽略。

        webSetting.setLoadsImagesAutomatically(true); // WebView是否下載圖片資源,默認爲true。如果該設置項的值由false變爲true,WebView展示的內容所引用的所有的圖片資源將自動下載。

        webSetting.setBlockNetworkImage(false);//是否禁止從網絡(通過http和https URI schemes訪問的資源)下載圖片資源,默認值爲false 除非setLoadsImagesAutomatically()返回 true,否則該方法無效

        webSetting.setBuiltInZoomControls(true);  //是否使用內置的縮放機制 默認值爲false。 內置的縮放機制包括屏幕上的縮放控件(浮於WebView內容之上)和縮放手勢的運用。通過 setDisplayZoomControls(boolean)可以控制是否顯示這些控件

        webSetting.setDisplayZoomControls(false); // 使用內置的縮放機制時是否展示縮放控件,默認值true。參見setBuiltInZoomControls(boolean).

        webSetting.setCacheMode(WebSettings.LOAD_DEFAULT); // 重寫使用緩存的方式,默認值LOAD_DEFAULT。緩存的使用方式基於導航類型,正常的頁面加載,檢測緩存,需要時緩存內容復現。導航返回時,內容 不會復現,只有內容會從緩存盤中恢復。該方法允許客戶端通過指定LOAD_DEFAULT, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE or LOAD_CACHE_ONLY的其中一項來重寫其行爲。

        webSetting.setDatabaseEnabled(true); // 數據庫存儲API是否可用,默認值false如何正確設置數據存儲API參見setDatabasePath(String)。該設置對同一進程中的所有WebView實例均有 效。注意,只能在當前進程的任意WebView加載頁面之前修改此項,因爲此節點之後WebView的實現類可能會忽略該項設置的改變。


//        webSetting.setDatabasePath ("") // 已廢棄,數據庫路徑由實現(implementation)管理,調用此方法無效。

        webSetting.setDomStorageEnabled(true);//DOM存儲API是否可用,默認false。

        webSetting.setJavaScriptCanOpenWindowsAutomatically(true); // 讓JavaScript自動打開窗口,默認false。適用於JavaScript方法window.open()。

        webSetting.setJavaScriptEnabled(true);//設置WebView是否允許執行JavaScript腳本,默認false,不允許

        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); //設置佈局,會引起WebView的重新佈局(relayout),默認值NARROW_COLUMNS 視頻適應屏幕

        webSetting.setLoadWithOverviewMode(true); // 是否允許WebView度超出以概覽的方式載入頁面,默認false。即縮小內容以適應屏幕寬度。該項設置在內容寬度超出WebView控件的寬度時生效,例 如當getUseWideViewPort() 返回true時。

        webSetting.setMediaPlaybackRequiresUserGesture(true);// WebView是否需要用戶的手勢進行媒體播放,默認值爲true。

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); // 當一個安全的來源(origin)試圖從一個不安全的來源加載資源時配置WebView的行爲 LOLLIPOP版本默認值MIXED_CONTENT_NEVER_ALLOW,WebView首選的最安全的操作模式爲MIXED_CONTENT_NEVER_ALLOW ,不鼓勵使用 MIXED_CONTENT_ALWAYS_ALLOW。
        }

        webSetting.setNeedInitialFocus(true); // 調用requestFocus(int, Android.graphics.Rect)時是否需要設置節點獲取焦點,默認值爲true。

        webSetting.setSaveFormData(true); // WebView是否保存表單數據,默認值true。

        webSetting.setSupportMultipleWindows(false); // 設置WebView是否支持多窗口。如果設置爲true,主程序要實現onCreateWindow(WebView, boolean, boolean, Message),默認false。如果設置了true並且沒有實現onCreateWindiw 會在onShouldOverrideUrlLoading監聽不到跳轉的url

        webSetting.setSupportZoom(true);//WebView是否支持使用屏幕上的縮放控件和手勢進行縮放,默認值true。設置setBuiltInZoomControls(boolean)可以使用特殊的縮放機制。

        webSetting.setUseWideViewPort(true);// WebView是否支持HTML的“viewport”標籤或者使用wide viewport。設置值爲true時,佈局的寬度總是與WebView控件上的設備無關像素(device- dependent pixels)寬度一致。當值爲true且頁面包含viewport標記,將使用標籤指定的寬度。

        webSetting.setUserAgentString("android"); // 設置WebView的用戶代理字符串。如果字符串爲null或者empty,將使用系統默認值。注意從KITKAT版本開始,加載網頁時改變用戶代理會讓WebView 再次初始化加載。

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            WebView.setWebContentsDebuggingEnabled(App.isDebug);
        }

        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND); // 在API18以上已廢棄。未來將不支持插件,不要使用。告訴WebView啓用、禁用或者有即用(on demand)的插件,即用模式是指如果存在一個可以處 理嵌入內容的插件,會顯示一個佔位圖標,點擊時開啓。默認值OFF。

 

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