史上最全的WebSettings說明

Tybyq發表於2019-08-26

WebSettings webSettings=webView.getSettings(); setAllowContentAccess (boolean allow) 是否允許在WebView中訪問內容URL(Content Url),預設允許。內容Url訪問允許WebView從安裝在系統中的內容提供者載入內容。

  1. setAllowFileAccess (boolean allow) 是否允許訪問檔案,預設允許。注意,這裡只是允許或禁止對檔案系統的訪問,Assets 和 resources 檔案使用file:///android_asset和file:///android_res仍是可訪問的。
  2. setAllowFileAccessFromFileURLs (boolean flag) 是否允許執行在一個URL環境(the context of a file scheme URL)中的JavaScript訪問來自其他URL環境的內容,為了保證安全,應該不允許。也請注意,這項設定隻影響對file schema 資源的JavaScript訪問,其他形式的訪問,例如來自圖片HTML單元的訪問不受影響。為了防止相同的域策略(same domain policy)對ICE_CREAM_SANDWICH以及更老機型的侵害,應該顯式地設定此值為false。
  3. setAllowUniversalAccessFromFileURLs (boolean flag) 是否允許執行在一個file schema URL環境下的JavaScript訪問來自其他任何來源的內容,包括其他file schema URLs. 參見setAllowFileAccessFromFileURLs(boolean),為了確保安全,應該設定為不允許,注意這項設定隻影響對file schema 資源的JavaScript訪問,其他形式的訪問,例如來自圖片HTML單元的訪問不受影響。為了防止相同的域策略(same domain policy)對ICE_CREAM_SANDWICH以及更老機型的侵害,應該顯式地設定此值為false。ICE_CREAM_SANDWICH_MR1 以及更老的版本此預設值為true,JELLY_BEAN以及更新版本此預設值為false
  4. setAppCacheEnabled (boolean flag) 應用快取API是否可用,預設值false, 結合setAppCachePath(String)使用。
  5. setAppCachePath(String) 設定應用快取檔案的路徑。為了讓應用快取API可用,此方法必須傳入一個應用可寫的路徑。該方法只會執行一次,重複呼叫會被忽略。
  6. setAppCacheMaxSize (long appCacheMaxSize) 已廢棄。設定應用快取內容的最大值。所傳值會被近似為資料庫支援的最近似值,因此這是一個指示值,而不是一個固定值。所傳值若小於資料庫大小不會讓資料庫調整大小。預設值是MAX_VALUE,建議將預設值設定為最大值。
  7. setBlockNetworkImage (boolean flag) 是否禁止從網路(透過http和https URI schemes訪問的資源)下載圖片資源,預設值為false。注意,除非getLoadsImagesAutomatically()返回true,否則該方法無效。還請注意,即使此項設定為false,使用setBlockNetworkLoads(boolean)禁止所有網路載入也會阻止網路圖片的載入。當此項設定的值從true變為false,WebView當前顯示的內容所引用的網路圖片資源會自動獲取。
  8. setBlockNetworkLoads (boolean flag) 是否禁止從網路下載資料,如果app有INTERNET許可權,預設值為false,否則預設為true。使用setBlockNetworkImage(boolean) 只會禁止圖片資源的載入。注意此值由true變為false,當前WebView展示的內容所引用的網路資源不會自動載入,直到呼叫了過載。如果APP沒有INTERNET許可權,設定此值為false會丟擲SecurityException。
  9. setBuiltInZoomControls (boolean enabled) 是否使用內建的縮放機制。內建的縮放機制包括螢幕上的縮放控制元件(浮於WebView內容之上)和縮放手勢的運用。透過setDisplayZoomControls(boolean)可以控制是否顯示這些控制元件,預設值為false。
  10. setCacheMode (int mode) 重寫使用快取的方式,預設值LOAD_DEFAULT。快取的使用方式基於導航型別,正常的頁面載入,檢測快取,需要時快取內容復現。導航返回時,內容不會復現,只有內容會從快取盤中恢復。該方法允許客戶端透過指定LOAD_DEFAULT, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE or LOAD_CACHE_ONLY的其中一項來重寫其行為。
  11. setCursiveFontFamily (String font) 設定WebView字型庫字型,預設“cursive”
  12. setDatabaseEnabled (boolean flag) 資料庫儲存API是否可用,預設值false。如何正確設定資料儲存API參見setDatabasePath(String)。該設定對同一程式中的所有WebView例項均有效。注意,只能在當前程式的任意WebView載入頁面之前修改此項,因為此節點之後WebView的實現類可能會忽略該項設定的改變。
  13. setDatabasePath (String databasePath) 已廢棄,資料庫路徑由實現(implementation)管理,呼叫此方法無效。 設定資料庫的儲存路徑,為了保證資料庫正確執行,該方法必須使用一個應用可寫的路徑。此方法只能執行一次,重複呼叫會被忽略。
  14. setDefaultFixedFontSize (int size) 設定預設固定的字型大小,預設為16,可取值1到72
  15. setDefaultFontSize (int size) 設定預設的字型大小,預設16,可取值1到72
  16. setDefaultTextEncodingName (String encoding) 設定預設的字元編碼集,預設”UTF-8”.
  17. setDefaultZoom (WebSettings.ZoomDensity zoom) 已廢棄。設定預設的縮放密度,必須在UI執行緒呼叫,預設值MEDIUM.該項設定在新應用中不推薦使用。如果WebView用於展示手機頁面,可以透過調整頁面的’meta viewport’ 標記中的’width’ 和 ‘initial-scale’屬性實現預期效果,對於漏用標記的頁面,可以使用setInitialScale(int)和setUseWideViewPort(boolean) .
  18. setDisplayZoomControls (boolean enabled) 使用內建的縮放機制時是否展示縮放控制元件,預設值true。參見setBuiltInZoomControls(boolean).
  19. setDomStorageEnabled (boolean flag) DOM儲存API是否可用,預設false。
  20. setEnableSmoothTransition (boolean enable) 已廢棄,將來會成為空操作(no-op),設定當panning或者縮放或者持有當前WebView的window沒有焦點時是否允許其光滑過渡,若為true,WebView會選擇一個效能最大化的解決方案。例如過渡時WebView的內容可能不更新。若為false,WebView會保持精度(fidelity),預設值false。
  21. setFantasyFontFamily (String font) 設定fantasy字型集(font family)的名字預設為“fantasy”
  22. setFixedFontFamily (String font) 設定固定的字型集的名字,預設為”monospace”。
  23. setGeolocationDatabasePath (String databasePath) 定位資料庫的儲存路徑,為了確保定位許可權和快取位置的持久化,該方法應該傳入一個應用可寫的路徑。
  24. setGeolocationEnabled (boolean flag) 定位是否可用,預設為true。請注意,為了確保定位API在WebView的頁面中可用,必須遵守如下約定: (1) app必須有定位的許可權,參見ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION; (2) app必須提供onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)回撥方法的實現,在頁面透過JavaScript定位API請求定位時接收通知。 作為可選項,可以在資料庫中儲存歷史位置和Web初始許可權,參見setGeolocationDatabasePath(String).
  25. setJavaScriptCanOpenWindowsAutomatically (boolean flag) 讓JavaScript自動開啟視窗,預設false。適用於JavaScript方法window.open()。
  26. setJavaScriptEnabled (boolean flag) 設定WebView是否允許執行JavaScript指令碼,預設false,不允許。
  27. setLayoutAlgorithm (WebSettings.LayoutAlgorithm l) 設定佈局,會引起WebView的重新佈局(relayout),預設值NARROW_COLUMNS
  28. setLightTouchEnabled (boolean enabled) 已廢棄。從 JELLY_BEAN 開始,該設定無效。允許使用輕觸控做出選擇和游標懸停。
  29. setLoadWithOverviewMode (boolean overview) 是否允許WebView度超出以概覽的方式載入頁面,預設false。即縮小內容以適應螢幕寬度。該項設定在內容寬度超出WebView控制元件的寬度時生效,例如當getUseWideViewPort() 返回true時。
  30. setLoadsImagesAutomatically (boolean flag) WebView是否下載圖片資源,預設為true。注意,該方法控制所有圖片的下載,包括使用URI嵌入的圖片(使用setBlockNetworkImage(boolean) 只控制使用網路URI的圖片的下載)。如果該設定項的值由false變為true,WebView展示的內容所引用的所有的圖片資源將自動下載。
  31. setMediaPlaybackRequiresUserGesture (boolean require) WebView是否需要使用者的手勢進行媒體播放,預設值為true。
  32. setMinimumFontSize (int size) 設定最小的字號,預設為8
  33. setMinimumLogicalFontSize (int size) 設定最小的本地字號,預設為8。
  34. setMixedContentMode (int mode) 當一個安全的來源(origin)試圖從一個不安全的來源載入資源時配置WebView的行為。預設情況下,KITKAT及更低版本預設值為MIXED_CONTENT_ALWAYS_ALLOW,LOLLIPOP版本預設值MIXED_CONTENT_NEVER_ALLOW,WebView首選的最安全的操作模式為MIXED_CONTENT_NEVER_ALLOW ,不鼓勵使用MIXED_CONTENT_ALWAYS_ALLOW。
  35. setNeedInitialFocus (boolean flag) 呼叫requestFocus(int, Android.graphics.Rect)時是否需要設定節點獲取焦點,預設值為true。
  36. setOffscreenPreRaster (boolean enabled) 當WebView切換到後臺但仍然與視窗關聯時是否raster tiles,開啟它可以避免在WebView從後臺切換到前臺時重新繪製,預設值false。在這種模式下後臺的WebView佔用更多的記憶體。請按如下準則顯示記憶體的使用:
  37. WebView的尺寸不能比裝置的螢幕尺寸更大; 限制在少數WebView上使用該模式; 在可見的WebView和即將顯現的WebView上使用; setPluginState (WebSettings.PluginState state) 在API18以上已廢棄。未來將不支援外掛,不要使用。告訴WebView啟用、禁用或者有即用(on demand)的外掛,即用模式是指如果存在一個可以處理嵌入內容的外掛,會顯示一個佔點陣圖標,點選時開啟。預設值OFF。
  38. setRenderPriority (WebSettings.RenderPriority priority) 在API18以上已廢棄。不建議調整執行緒優先順序,未來版本不會支援這樣做。設定繪製(Render,很多書上翻譯成渲染,貌似很專業,但是不易懂,不敢苟同)執行緒的優先順序。不像其他設定,同一程式中只需呼叫一次,預設值NORMAL。
  39. setSansSerifFontFamily (String font) 設定無襯線字型集(sans-serif font family)的名字。預設值”sans-serif”.
  40. setSaveFormData (boolean save) WebView是否儲存表單資料,預設值true。
  41. setSavePassword (boolean save) API18以上版本已廢棄。未來版本將不支援儲存WebView中的密碼。設定WebView是否儲存密碼,預設true。
  42. setSerifFontFamily (String font) 設定襯線字型集(serif font family)的名字,預設“sans-serif”。
  43. setStandardFontFamily (String font) 設定標準字型集的名字,預設值“sans-serif”。
  44. setSupportMultipleWindows (boolean support) 設定WebView是否支援多視窗。如果設定為true,主程式要實現onCreateWindow(WebView, boolean, boolean, Message),預設false。
  45. setSupportZoom (boolean support) WebView是否支援使用螢幕上的縮放控制元件和手勢進行縮放,預設值true。設定setBuiltInZoomControls(boolean)可以使用特殊的縮放機制。該項設定不會影響zoomIn() and zoomOut()的縮放操作。
  46. setTextSize (WebSettings.TextSize t) API14版本以上已廢棄。請取代使用setTextZoom(int)。設定頁面文字的尺寸,預設NORMAL。
  47. setTextZoom (int textZoom) 設定頁面上的文字縮放百分比,預設100。
  48. setUseWideViewPort (boolean use) WebView是否支援HTML的“viewport”標籤或者使用wide viewport。設定值為true時,佈局的寬度總是與WebView控制元件上的裝置無關畫素(device-dependent pixels)寬度一致。當值為true且頁面包含viewport標記,將使用標籤指定的寬度。如果頁面不包含標籤或者標籤沒有提供寬度,那就使用wide viewport。
  49. setUserAgentString (String ua) 設定WebView的使用者代理字串。如果字串為null或者empty,將使用系統預設值。注意從KITKAT版本開始,載入網頁時改變使用者代理會讓WebView再次初始化載入。
  50. supportMultipleWindows () 獲取WebView是否支援多視窗的值。
  51. supportZoom () 獲取WebView是否支援縮放的值


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2654935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章