1;网络权限
<uses-permission android:name="android.permission.INTERNET"/>
2:
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3:属性
- WebSettings settings = webView.getSettings();
- settings.setJavaScriptEnabled(true);//.如果访问的页面中有Javascript,则webview必须设置支持Javascript
// 若加载的 html 里有JS 在执行动画等操作,会造成资源浪费(CPU、电量)// 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可//支持插件webSettings.setPluginsEnabled(true); //设置自适应屏幕,两者合用
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小//缩放操作 -
webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
-
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
-
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
-
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件//其他细节操作
-
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存 webSettings.setAllowFileAccess(true); //设置可以访问文件 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
-
webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
4:加载
- webView = (WebView) findViewById(R.id.webView);
- //WebView加载web资源
- webView.loadUrl("http://baidu.com");
//方式2:加载apk包中的html页面
webView.loadUrl("file:///android_asset/test.html");
//方式3:加载手机本地的html页面
webView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");
// 方式4: 加载 HTML 页面的一小段内容
WebView.loadData(String data, String mimeType, String encoding)
webView.loadData("<html><head>"+ body +"</head><body>" + htmlConntent + "</body></html>", "text/html; charset=UTF-8",null):
5:返回浏览器上一页
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if(keyCode==KeyEvent.KEYCODE_BACK) {
- if(webView.canGoBack()) {
- webView.goBack();//返回上一页面
- return true;
- } else {
- System.exit(0);//退出程序
- }
- }
- return super.onKeyDown(keyCode, event);
- }
//是否可以前进 Webview.canGoForward()
//前进网页Webview.goForward()
//以当前的index为起始点前进或者后退到历史记录中指定的steps//如果steps为负数则为后退,正数则为前进Webview.goBackOrForward(intsteps)
6 js交互
网页调用原生
xy_wv.addJavascriptInterface(new Object() {//和javascript交互
@JavascriptInterface
public void getAppShare(final String backUrl) {
}
@JavascriptInterface
public void locationReload(String url){
}
@JavascriptInterface
public void setTitleParam(String appTitleParam){
print(appTitleParam+"__________sdf__________________________");
}
}, "android_APP");
}
原生调用网页webview.loadUrl("");
xy_wv.loadUrl("javascript:jumpTab('3')");
xy_wv.loadUrl("javascript:submitSearchForm(" + "'" + NUM + "'" + ")");
// JS代码 <script>// Android需要调用的方法
function callJS(){ alert("Android调用了JS的callJS方法"); }
</script>
通过WebView
的evaluateJavascript()
mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() {
@Override public void onReceiveValue(String value) {
//此处为 js 返回的结果 } });
https://www.jianshu.com/p/3c94ae673e2a
https://blog.csdn.net/carson_ho/article/details/64904691