Android(安卓)Java和JavaScript代码相互调用
16lz
2022-04-10
在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>
更多相关文章
- Android(安卓)Service启动(二) bindService()启动过程以及原理解析
- Android之设置页面(PreferenceActivity使用)
- Android(安卓)IPC 通讯机制源码分析
- Android(安卓)登录界面调用输入法时让界面自动上移,使输入法不会
- Android(安卓)多媒体
- Android(安卓)WebView与Javascript交互
- android之Menu 实例与详解
- Android中点击按钮后隐藏输入法
- 箭头函数的基础使用