本文参考:http://www.cnblogs.com/zgz345/p/3768174.html https://blog.youkuaiyun.com/qq_24530405/article/details/52067474
WebView是Android常用的一个视图控件,用处很多,功能也很强大,但是自己有点陌生,因为在项目中用到的比较少,所以写篇博客,学习一下。
刚开始就踩了个坑,真的是天若有情天亦老,人间正道是沧桑。
从Android9.0(API28)开始,WebView在默认情况下禁止使用URL明文进行加载,因此Http的URL均无法在WebView中加载。
解决方法如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
1.WebView的基本使用
//允许WebView使用JavaScript
mWebView.getSettings().setJavaScriptEnabled(true);
//设置WebView缓存模式
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//获得网页的标题
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
Log.i(TAG, "onReceivedTitle: " + title);
super.onReceivedTitle(view, title);
}
});
//根据实际情况加载url
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "shouldOverrideUrlLoading: " + url);
if(TextUtils.isEmpty(url)){
return false;
}
//处理Scheme
if(url.startsWith("baiduhaokan:")){
view.loadUrl(URL);
return true;
}
view.loadUrl(url);
return true;
}
});
//加载URL
mWebView.loadUrl(URL);
//设置返回监听
mWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK) {
if(mWebView.canGoBack()) {
mWebView.goBack();//返回上一页面
return true;
} else {
return false;
}
}
return true;
}
});