JavaScript調用Android原生方法:
1、在JavaScript中調用原生方法
首先需要在Android中定義JavaScriptInterface類
public class Javascriptinterface{
WeakReference<Activity> weakReference;
public Javascriptinterface(Activity context) {
this.weakReference = new WeakReference<>(context);
}
@JavascriptInterface
public void ShowToast(String msg){
Toast.makeText(weakReference.get(), msg, Toast.LENGTH_LONG).show();
}
}
然後設置webview,添加JavaScriptInterface:可直接通過webview的addJavascriptInterface()方法
webView.addJavascriptInterface(new Javascriptinterface(this), "android");
//其中第一個參數是自定義的給JavaScript調用的方法類,其中定義需要提供的方法。
//第二個參數是name,相當於接口對象的變量名,在js中可直接使用
最後在html頁面中需要使用接口的地方調用原生方法:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport"
content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<script type="text/javascript">
function show(argument) {
// body...
android.ShowToast(argument)
}
function androidCallJs(){
alert("Android調用了js的方法")
}
</script>
</head>
<body>
<button οnclick="show('這是調的原生的方法')">js調用原生的方法</button>
</body>
</html>
2、在Android中調用JavaScript方法
首先在js中定義function,然後在Android界面通過webview調用
tvTitile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webView.loadUrl("javascript:androidCallJs()");
//直接用JavaScript拼接上方法即可
}
});
另外在webview中加載本地assets中的html:
webView.loadUrl("file:///android_asset/app.html");