Android中Java和JavaScript交互实例
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。
如何实现
实现Java和js交互十分便捷。通常只需要以下几步。
1.WebView开启JavaScript脚本执行
2.WebView设置供JavaScript调用的交互接口。
3.客户端和网页端编写调用对方的代码。
本例代码
为了便于讲解,先贴出全部代码
Java代码
packagecom.example.javajsinteractiondemo;
importandroid.annotation.SuppressLint; importandroid.app.Activity; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.Menu; importandroid.webkit.JavascriptInterface; importandroid.webkit.WebChromeClient; importandroid.webkit.WebSettings; importandroid.webkit.WebView; importandroid.webkit.WebViewClient; importandroid.widget.Toast;
publicclassMainActivityextendsActivity{ privatestaticfinalStringLOGTAG="MainActivity"; @SuppressLint("JavascriptInterface") @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); finalWebViewmyWebView=(WebView)findViewById(R.id.myWebView); WebSettingssettings=myWebView.getSettings(); settings.setJavaScriptEnabled(true); myWebView.addJavascriptInterface(newJsInteration(),"control"); myWebView.setWebChromeClient(newWebChromeClient(){}); myWebView.setWebViewClient(newWebViewClient(){
@Override publicvoidonPageFinished(WebViewview,Stringurl){ super.onPageFinished(view,url); testMethod(myWebView); } }); myWebView.loadUrl("file:///android_asset/js_java_interaction.html"); } privatevoidtestMethod(WebViewwebView){ Stringcall="javascript:sayHello()"; call="javascript:alertMessage(\""+"content"+"\")"; call="javascript:toastMessage(\""+"content"+"\")"; call="javascript:sumToJava(1,2)"; webView.loadUrl(call); } publicclassJsInteration{ @JavascriptInterface publicvoidtoastMessage(Stringmessage){ Toast.makeText(getApplicationContext(),message,Toast.LENGTH_LONG).show(); } @JavascriptInterface publicvoidonSumResult(intresult){ Log.i(LOGTAG,"onSumResultresult="+result); } }
}