报的问题:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
h5页面里有个分享按钮要和原生交互:
js与原生互调的时候是耗时操作,在子线程里完成,当方法执行后调用有盟分享需要在主线程里去执
行有盟的分享,所以要在互调方法里,用Handler或runOnUiThread 执行有盟分享
class DemoJavaScriptInterface {
这个方法是交互方法:点击h5页分享按钮调用这个方法
@JavascriptInterface}
public void didClickShare(分享Url) {
runOnUiThread(new Runnable() {
@Override
public void run() {
ShareMsg(分享Url);//分享方法
}
});
}
}
private void ShareMsg(final String url) {
new ShareAction(WebViewActivity.this).setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE)
.setShareboardclickCallback(new ShareBoardlistener() {
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
new ShareAction(WebViewActivity.this)
.withMedia(new UMImage(mContext, 图片地址))//分享图片
.withText(body)//分享的内容
.withTitle(head)//分享显示标题
.withTargetUrl(url)
.setPlatform(share_media)
.setCallback(umShareListener)//分享回调方法
.share();
}
}).open();
}
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onResult(SHARE_MEDIA share_media) {
//分享成功
}
@Override
public void onError(SHARE_MEDIA share_media, Throwable throwable) {
//分享失败
}
@Override
public void onCancel(SHARE_MEDIA share_media) {
//分享取消
}
};