微信分享点击返回自己的app,黑屏
(项目忙的小伙伴可以直接看最后)
因项目需求,需要做一个微信分享的功能
。。。。。。。。。
打开微信开放平台,Android开发手册
OK,复制粘,呸!经过认真仔细阅读官方文档深思熟虑之后,开始粘代码
(因为我们是分享网址,就写了分享网址的代码,其他需求的参考官方文档就可以了)
private void wxBindShareFriend() {
IWXAPI mIWXApi = WXAPIFactory.createWXAPI(this, BuildConfig.WX_APP_ID, true);
mIWXApi.registerApp(BuildConfig.WX_APP_ID);
if (WXHelper.isWxAppInstalled(mContext, mIWXApi)) {
//初始化一个WXWebpageObject,填写url
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "这里写你要分享的网址”;
//用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "网页标题 ";
msg.description = "网页描述";
Bitmap thumbBmp = BitmapFactory.decodeResource(getResources(), R.drawable.renwen);
thumbBmp.recycle();
//msg.thumbData = bmpToByteArray(thumbBmp, true);
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = ("webpage");
req.message = msg;
//设置发送到朋友 !!!!!这里是分享好友的方法
req.scene = SendMessageToWX.Req.WXSceneSession;
//设置发送到朋友圈!!!!!这里是分享朋友圈的方法
req.scene = SendMessageToWX.Req.WXSceneTimeline;
//req.userOpenId = getOpenId();
//调用api接口,发送数据到微信
mIWXApi.sendReq(req);
} else {
//未安装微信
ToastUtil.showToast(mContext, "您还没有安装微信客户端");
}
}
这里是 AndroidManifest 配置
微信登录和分享都是这一个类
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:launchMode="singleTop" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
都弄好了然后运行,挺好没有报错,点击分享按钮,分享成功,OK功能写完了,返回啊婆婆(APP)
我靠! 怎么点击屏幕没有反应,状态栏是黑的,在按一下物理返回键,好了。
。。。
这是啥情况!后来发现,因为微信登录和分享都是WXEntryActivity
登录时的BaseResp 的类型 是SendAuth,就是说分享和登录成功都是
BaseResp.ErrCode.ERR_OK,唯一的区别就是登陆成功是if (baseResp instanceof SendAuth.Resp);
那么就加一个判断 else {finish();} (我也知道这么写不友好,实在是没找到分享成功的状态,知道的大佬鼠请告诉我一下)
运行程序,点击分享,分享成功,返回APP,完美运行!
刚开始学习写博客,有什么不对的地方请各位狮虎们批评,反正我也不改(开个玩笑)