Android Java和JavaScript代码相互调用
16lz
2021-01-23
在Android中实现Java和Js交互,通常只需要以下几步,
1.WebView开启JavaScript脚本执行
2.WebView设置供JavaScript调用的交互接口
3.客户端和网页端实现调用的接口
JAVA
private WebView mWebView; private JSInterface mInterface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mInterface = new JSInterface(); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient()); mWebView.setWebChromeClient(new WebChromeClient()); mWebView.addJavascriptInterface(mInterface, "EventJavascriptInterface"); mWebView.loadUrl("http://XXXXXXXXX/js-call-1.html"); } //Java调用JavaScript public void callJSButton(View v){ String para1 = "Para1"; int para2 = 2; boolean para3 = true; mWebView.loadUrl(String.format("javascript:testJavaCall(\"%s\",%s,%s)", para1,para2,para3)); } public void refreshButton(View v){ mWebView.reload(); }
Interface
public class JSInterface { @JavascriptInterface public void testJSCall(){ Log.e("Test","testJSCall"); } @JavascriptInterface public void testJSCall(String para){ Log.e("Test","testJSCall para = "+para); } @JavascriptInterface public String testJSCall1(){ return "This is a test"; }}
HTML
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><script type="text/javascript"> function callJAVA(){ alert(window.EventJavascriptInterface.testJSCall1()); } function testJavaCall(arg1,arg2,arg3){ alert("testJavaCall: arg1="+arg1+", arg2="+arg2+", arg3="+arg3); } </script></head><body>This is my test html <br/><br/><a onClick="javascript:window.EventJavascriptInterface.testJSCall()" >点击调用java函数</a><br/><a onClick="javascript:EventJavascriptInterface.testJSCall('hello world')" >点击调用java函数并传递参数</a><br/><a onClick="callJAVA()" >点击调用java函数并返回结果</a><br/><br/></body></html>
更多相关文章
- Unity与Android接口互相调用
- Android Interface Definition Language (AIDL) android接口定义
- Android OpenGL库函数列表
- Android 访问Webservice接口,参数对象不能串行化问题解决(java.lan
- Android接口初了解
- Android 9.0 (P版本) 亮度控制接口变更
- Android中Adapter接口及其实现类详解
- Android Asynchronous Http Client-Android异步网络请求客户端接