Android调用js
- 首先设置webview支持JavaScrip
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
2.使用loadurl 调用js方法
webView.loadUrl("javascript:mMethord()");
//带参数
webView.loadUrl("javascript:setValue('" + repayBean.getTxnId() + "','" + repayBean.getPartnerId() + "','" + repayBean.getHash() + "')");
也可以使用evaluateJavascript
if (version >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("javascript:mMethord()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//获取返回值,如果存在
}
});
}
注意: evaluateJavascript这个方法是在Android4.4之后才引入的,因此如果需要使用该方法则需要minSdkVersion大于等于19,在执行完js方法后会执行ValueCallback中的onReceiveValue方法,完成回调操作。
JS调用APP原生方法
- 新建一个类JsInterface
public class JsInterface extends Object{
private WebView mWebView;
private Context mContext;
public JsInterface(Context mContex,WebView webView) {
this.mWebView = webView;
this.mContext=mContext;
}
//该方法将会被js 调用
@JavascriptInterface
public void unlock(String jsCallJava) {
if (mContext!=null){
mContext.startActivity(new Intent(mContext,OpenActivity.class));
}
ToastUtils.showShortToast(jsCallJava);
}
}
注意: 被js调用的方法要加上注解JavascriptInterface 这个很重要!
- 降此方法暴露出去,方便js调用
webView.addJavascriptInterface(new JsInterface(getActivity(),webView), "android");
3.js调用
/*
*android是addJavascriptInterface的第二个参数
*unlock 是JsInterface中自己定义的方法
*/
android.unlock("调用了")
这样就可以完成Android与js 的交互工作!