JS调用原生的代码:
this.addJavascriptInterface(
new JavaScriptInterface(
this.getContext()),
"JSInterface");
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void intentMethod( int jsType) {
Intent intent = new Intent();
intent.setAction(Constants. JS_BROADCAST_ACUTION);
intent.putExtra( "jsType", jsType);
intent.addFlags(Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
mContext.sendBroadcast(intent);
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void intentMethod( int jsType) {
Intent intent = new Intent();
intent.setAction(Constants. JS_BROADCAST_ACUTION);
intent.putExtra( "jsType", jsType);
intent.addFlags(Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
mContext.sendBroadcast(intent);
}
}
/**
- JavaScriptInterface : 是原生自己写的类,类名按照明明规范就可以,最好写上带着context的构造参数,以便接收到数据后做页面跳转等逻辑
- "JSInterface" : 是原生和js开发人员共同商议好的标志,用来调用原生方法
- intentMethod(): 原生写的方法,js调用,在这个方法中能够接收到js传入的数据(如果数据比较多,可以使用json字符串接收)
- @JavascriptInterface:js调用的方法必须加此注解
- */
原生调用JS方法:
webView.loadUrl("javascript:loginByToken('"+NeedFlags.phone+"','"+NeedFlags.password+"')");
/**
- webView :加载网页的WebView
- loadUrl :WebView自带方法
- javascript :原生调用js方法的固定格式
- loginByToken : js的方法,在原生调用此方法时,js端可以收到原生传入的数据(如果是单个参数可以直接传字符串,如果是多个则kechuan)
- */