代码和JS相互调用"/>
Android之Webview使用Java代码和JS相互调用
本文主要记录一些零碎的东西
最近由于项目的需要,需要使用Java代码和JS相互调用,特此记录一点入门的东西,仅仅是入门而已
github: .git
话不多说,肯定是分为两块的
1.java 调用 js:
/*** method here will not load html ,only load js ,just js* will call back in {@link android.webkit.WebChromeClient#onJsAlert(* android.webkit.WebView, java.lang.String, java.lang.String, android.webkit.JsResult)}* 在log 里可以查看 test is ok*/mWebView.loadUrl("javascript:" + JS_FUNCTION);//注入js函数
// mWebView.loadUrl("javascript:" + initAssertJSToString("testJs.js"));// read from file is also okmWebView.loadUrl("javascript:jsFun("+"I am param"+")");//调用js函数
// mWebView.loadUrl("javascript:justTest("+TOP_SID+","+SUB_SID+")");// double param is also ok
这里使用webview , 其实没有必要加载一个html 文件,然后在html 文件里运行js,可以直接注入一段 js 代码,然后调用
本案例使用的就是这样的方式,webveiw其实没有显示任何东西
final static String JS_FUNCTION ="function jsFun(msg) {\n" +" alert(\"jsFun...\" + msg); " +" }";
2.js 调用 java:
/*** js ---调用---> java test is ok*/mWebView.addJavascriptInterface(new JSBridge(),"slack");mWebView.loadUrl("file:///android_asset/index.html");// loadUrl ok
需要用到一个注解@JavascriptInterface
本地接口类
public class JSBridge {@JavascriptInterfacepublic void jsMessage(String message) {Log.i(TAG, "jsMessage" + message);Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();}}
本地 assert 下 的 index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html>
<head><meta http-equiv="Content-Type" cont
更多推荐
Android之Webview使用Java代码和JS相互调用
发布评论