WebView调用浏览器的方式:
1.加载本地html:
webview.loadUrl(“file:///android_asset/index.html”);
注意:本地index.html要放到assets根目录下,在android studio 下这个跟目录是需要自己建立的,路径是:xxx\src\main\下,否则运行时找不到这个html文件
2.加载网络html:
webview.loadUrl(“http://www.baidu.com“);
3.加载SDCard下html:
webview.loadUrl(“file:///adcard/index.html”);
关于webview和js的交互:
1.java调用js中的代码:
需要开启:
webview.getSetting().setJavaScriptEnabled(true);
然后直接通过loadUrl()方法调用即可.
webview.loadUrl(“javascript:javatojs()”);
参数:javascript是前缀,冒号后面跟js中要调用的方法。
2.js中调用java代码:
需要添加java中事先已经给写好的接口:
webview.addJavascriptInterface(this,”androidtojs”);
第一个参数是个objcet类型,这里我传了一个当前的类对象,方便调用整个类下面的方法,后面第二个参数是第一个参数的别称,方便在js中识别,相当于一个身份标示。
注:不知为啥,我用api:17(Android 4.2)真机调试,Android studio中一直有个错误的下划线,提示当前版本不支持该方法,但运行起来没问题。
然后就是js中调用java代码了
<a href="" onClick="window.androidtojs.test()">调用安卓中的方法</a>
“androidtojs”参数看出啥作用了吧,代表java中的当前类,调用该类下的test方法。
贴一下完整代码:
public class Fragement1 extends Fragment {
private WebView mywebview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootview=inflater.inflate(R.layout.fragment_main2,container,false);
//webview控件
mywebview=(WebView)rootview.findViewById(R.id.mywebview);
mywebview.loadUrl("file:///android_asset/index.html");
//开启可以调用js中的方法
mywebview.getSettings().setJavaScriptEnabled(true);
mywebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
//返回值为true则用webview打开,为false则用第三方浏览器打开
return true;
}
});
Button bt_change=(Button)rootview.findViewById(R.id.bt_change);
bt_change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mywebview.loadUrl("javascript:javatojs()");
}
});
//开启安卓接口调用方法
mywebview.addJavascriptInterface(this,"androidtojs");
return rootview;
}
public void test()
{
Toast.makeText(getActivity(), "js调用安卓中方法", Toast.LENGTH_SHORT).show();
}
}
js代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
<script type="text/javascript">
function javatojs()
{
document.getElementById("content").innerHTML="java调用js中的方法";
}
</script>
</head>
<body>
<span id="content"></span>
<a href="" onClick="window.androidtojs.test()">调用java中的方法</a>
</body>
</html>
好了,第一次发csdn的微博,知识点不多,暂且写这些。
转载请注明出处。