Android與JavaScript的簡單相互調用

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");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章