Android JS调原生 有盟分享 打开微信分享 原程序崩溃问题 报android.view.ViewRootImpl$CalledFromWrongThreadException:


 
 
 报的问题: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) {
       //分享取消
    }
};



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值