最近在项目中用友盟分享,分享内容涉及到android和JS的方法调用。
JS端调用android方法的代码
window.AndroidWebView.wxTL(share.qrcode);
window.AndroidWebView.wxA(share.qrcode);
window.AndroidWebView.wxS(encodeURI(shareUrl));
share.qrcode encodeURI(shareUrl) 都是string类型的参数 android ,在JS调用android方法时传入
对webview设置
WebSettings webSettings = mWebView.getSettings();
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//支持缩放
webSettings.setBuiltInZoomControls(true);
//设置使用缓存 webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//设置web view属性,能执行Javascript脚本
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptinterface(getActivity()),"AndroidWebView");
mWebView.loadUrl(URL);
mWebView.setWebViewClient(new RWebViewClient());
自定义JavaScriptinterface并对JS调用的方法添加 @JavascriptInterface;需要注意的是JS调用android的方法与JavaScriptinterface内需要被调用的方法参数要一致。
class JavaScriptinterface {
public JavaScriptinterface() {
}
//分享到朋友圈
@JavascriptInterface
public void wxTL(String share){
UMImage image = new UMImage(getActivity(),toOneBitmap(share));
new ShareAction(getActivity())
.withMedia(image)
.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
.setCallback(this)
.share();
}
//分享给好友
@JavascriptInterface
public void wxA(String share){
UMImage image = new UMImage(getActivity(),toOneBitmap(share));
new ShareAction(getActivity())
.withMedia(image)
.setPlatform(SHARE_MEDIA.WEIXIN)
.setCallback(this)
.share();
}
//分享文章
@JavascriptInterface
public void wxS(String share){
handler.sendEmptyMessage(0x01);
shareArticalUrl = share;
}
}
【链接】Android-webview和js互相调用
https://www.cnblogs.com/bigIndex/p/5981643.html
【链接】Android与JavaScript方法相互调用
http://aichixihongshi.iteye.com/blog/1183220