前言
最近項目中用到這個東西,這裏就順便扯一扯
一般配置
this.setInitialScale(1);
this.getSettings().setJavaScriptEnabled(true);
this.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
this.getSettings().setUseWideViewPort(true);
this.getSettings().setDisplayZoomControls(true);
設置Webview緩存
this.getSettings().setDomStorageEnabled(true);//開啓 DOM storage API 功能
this.getSettings().setDatabaseEnabled(true);//開啓 database storage API 功能
this.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//設置緩存
String cacheDirPath = getContext().getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;
this.getSettings().setAppCacheEnabled(true);
//設置 Application Caches 緩存目錄
this.getSettings().setAppCachePath(cacheDirPath);
緩存加載策略
{LOAD_DEFAULT, //默認加載方式
LOAD_NORMAL, //廢棄
LOAD_CACHE_ELSE_NETWORK,//優先緩存
LOAD_NO_CACHE,//優先網絡
LOAD_CACHE_ONLY//只使用緩存}
清理Webview緩存
boolean clearState = SharedPref.getInstance(getContext()).getBoolean(CLEAR_WEBVIEW_CACHE,false);
if (clearState) {
clearCache(true);
SharedPref.getInstance(getContext()).putBoolean(CLEAR_WEBVIEW_CACHE, false);
}
微信支付,支付寶支付拉起
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
url = request.getUrl().toString();
String scheme = request.getUrl().getScheme();
if (!TextUtils.isEmpty(scheme)) {
if (scheme.contains("weixin") || scheme.contains("alipays") || scheme.contains("tel")) {
//類型我目前用到的是微信、支付寶、撥號 三種跳轉方式,其他類型自加
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
//之前無法拉起微信支付跟這個有關
//切記不能使用註釋方法進行處理
//webview.loadurl("www")
//return true
return super.shouldOverrideUrlLoading(view, url);
}
如果使用註釋裏面的方法,將會導致重定向地址會增加history,這樣的話,返回上一頁又會再一次重定向到支付頁面,如果使用了頁面加載策略本地優先!!!特別注意
結束語
這個裏面的內容我就不仔細整理了,有問題直接問!