使用环境:
使用到webView
使用方法:
1 设置cookie
private String mS_url, cookieKey, cookieValue;
//webview加载的url
mS_url = activityIntent.getExtras().getString(Constant.BundleORIntentKey.KEY_URL);
//webView的cookie的key
cookieKey = activityIntent.getExtras().getString("module_cookie_key");
//webView的cookie的Value
cookieValue = activityIntent.getExtras().getString("module_cookie_value");
//基础属性之设置cookie 需要在webView.loadUrl()之前调用
public void setCookie() {
try {
LogUtil.e("设置cookie");
String StringCookie = cookieKey + "=" + cookieValue + ";path=/";
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeSessionCookies(null);
cookieManager.flush();
} else {
cookieManager.removeSessionCookie();
CookieSyncManager.getInstance().sync();
}
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(mS_url, StringCookie);
} catch (Exception e) {
LogUtil.e("cookie设置出错-->" + e.getMessage());
}
}
2 常用属性:
binding.infoAWebContent.getSettings().setSupportZoom(true);//缩放
binding.infoAWebContent.getSettings().setBuiltInZoomControls(true);
binding.infoAWebContent.getSettings().setDisplayZoomControls(false);
binding.infoAWebContent.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
binding.infoAWebContent.getSettings().setAllowFileAccess(true);
binding.infoAWebContent.getSettings().setGeolocationEnabled(true);
binding.infoAWebContent.getSettings().setDomStorageEnabled(true);
//注意userAgent中不允许有换行符
//String oldUserAgent =
binding.infoAWebContent.getSettings().getUserAgentString();
//binding.infoAWebContent.getSettings().setUserAgentString(oldUserAgent +
";ShiQin@App-Android");
binding.infoAWebContent.getSettings().setUserAgentString("app/ShiQin@App-Android");
setCookie();
binding.infoAWebContent.loadUrl(mS_url);
binding.infoAWebContent.getSettings().setJavaScriptEnabled(true);
binding.infoAWebContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
binding.infoAWebContent.getSettings().setLoadWithOverviewMode(true);
binding.infoAWebContent.getSettings().setDefaultTextEncodingName("UTF-8");
binding.infoAWebContent.getSettings().setAppCacheEnabled(false);
3 返回值处理:
/**
* 处理手机返回键返回上一页的卡顿问题
*
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if (binding.infoAWebContent.canGoBack()) {
//goBack()表示返回WebView的上一页面
binding.infoAWebContent.goBack();
return true;
} else {
finish();
return true;
}
}
return false;
}
4 掉起支付宝支付
在webView.loadUrl(str)前调用
binding.infoAWebContent.setWebViewClient(new WebViewClient() {
@SuppressLint("NewApi")
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
LogUtil.e("支付地址-->" + request.getUrl());
LogUtil.e("版本号SDK_INT-->" + Build.VERSION.SDK_INT);
LogUtil.e("版本号M-->" + Build.VERSION_CODES.M);
if (request.getUrl().toString().startsWith("alipays")) {
startPayActivity(request.getUrl());
} else if (request.getUrl().toString().startsWith("wxpays")) {
startPayActivity(request.getUrl());
} else {
binding.infoAWebContent.loadUrl(request.getUrl().toString());
}
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//获取url的标题
String title = view.getTitle();
// if (!TextUtils.isEmpty(title)) {
// mTitle = title;
// viewModel.setTitle(title);
// }
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
});
public void startPayActivity(Uri url) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(url);
startActivity(intent);
}
代码在调试时注入大量的log日志,亲在使用时忽略掉即可。
或者与我一样有好奇心,打印出来亲眼看看好放心。
更多讨论,欢迎来讨论: 88627109