常见遇到的需求是,从网页端调起本地的分享或者支付等……
思路是APP端与H5页面协定好一个方式,来调用APP里面的方法。
H5本地交换的js
- 安卓需要写的代码:
/**AndroidJavaScript
* 本地与h5页面交互的js类,这里写成内部类了
* returnAndroid方法上@JavascriptInterface一定不能漏了
*/
private class AndroidJavaScript {
Context mContxt;
public AndroidJavaScript (Context mContxt) {
this.mContxt = mContxt;
}
@JavascriptInterface
public void returnAndroid(String name) {//从网页跳回到APP
if (name.isEmpty()||name.equals("")){
return ;
}
//这里写你的操作///////////////////////
Intent intent = new Intent(WebActivity.this, MainActivity.class);
intent.putExtra("name",name);
startActivity(intent);
}
}
- 给目标webview设置,
mWebView.addJavascriptInterface(new AndroidJavaScript(getApplication()), "android");
H5写法:
<a href='JavaScript:android.returnAndroid("要返回给APP的数据")'>点击我跳回APP</a>
注意:
小心,就是字母大小写问题,传参数也要对才行,写错就调用不起来了(android、returnAndroid())
returnAndroid方法上@JavascriptInterface一定不能漏了。
所有要被H5调用的方法都要加上@JavascriptInterface,安卓4.2后就要添加上这个就能用js