前几年去掉了微信sdk,使用android系统的通用分享;最近由于业务需要又要加回来,结果标题相关问题都遇到了。
1、出现的问题和环节
点击应用的分享按钮后,通过微信分享接口转入微信界面后:
1-1、直接点微信左上角的返回按钮(无反应;或等一会黑屏,再等一会终于返回成功;或返回后又马上跳回微信)
1-2、选一个好友分享
1-2-1、点取消(即不分享)、再点微信的返回(现象同1-1)
1-2-2、点分享、再点返回应用按钮(返回应用成功;或返回应用后又马上跳回微信)
2、解决办法(除了“返回应用后又马上跳回微信”这个问题)
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
// ..
}
上边的写法:如果继承AppCompatActivity ,那么AndroidManifest.xml里必须把theme设置一下
<activity
android:configChanges="keyboard|keyboardHidden|orientation"
android:label="@string/app_name"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/Theme.AppCompat"
android:name=".wxapi.WXEntryActivity">
</activity>
必须是这句: android:theme="@style/Theme.AppCompat"
否则就会出现标题里的各种现象(除了返回应用后马上返回微信)。
3、解决问题:返回应用后又马上跳回微信
这个应该属于应用代码问题(网上随便找的代码,没想到它引发了如此奇怪的问题)。
private void testWeixinShare() {
Glide.with(this).asBitmap().load("图片url").into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, Transition<? super Bitmap> transition) {
WxShareUtils.shareWeb(activity, "你的AppId",
"https://baidu.com", "网页标题", "网页描述",
bitmap);
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
super.onLoadFailed(errorDrawable);
WxShareUtils.shareWeb(activity, "你的AppId",
"https://baidu.com", "网页标题", "网页描述",
null);
}
});
}
WxShareUtils是自定义类,这个不用管,不是问题。
问题在于原作者用Glide这个第三方类取网络图片,里边有这2个回调;至于为什么就不清楚了,不熟悉这个Glide。总之排除法:我自己写了一段分享图片(例如App当前界面的截图,Bitmap格式)的代码,不用这个Glide,也就用不到这2个回调,结果“返回应用后马上跳回微信”这个搞笑现象就消失了(既然跳回微信,就说明app又因为什么生命周期机制调用了微信分享接口,不过不想研究了,不用这个Glide回调就是了)。