Android 关于微信分享WXEntryActivity回调问

2023-03-12  本文已影响0人  母老虎饲养员

按照微信的api,我们都会在自己的项目包名路径下新建一个名为wxapi的包,然后在里面新建WXEntryActivity。

今天不说如何集成微信分享,说一下关于applicationId和项目包名不一致引发的WXEntryActivity没有收到回调的问题

关于applicationId

最早之前的安卓项目几乎没有applicationId的概念,或者说applicationId就是应用包名,因为我们一早灌输的概念就是应用包名应该是唯一的。但随着安卓版本的发展,applicationId的概念也逐渐凸显出来被应用到很多开发案例中,比如说同一款应用会有全功能版本和极速版本的区别,极速版功能轻量,包体小,对于用户转化和留存有着不可磨灭的功劳。
全功能版本和极速版本会在build.gradle(:app)中定义不同的applicationId,所以严格意义上来讲已经是两个应用,但项目工程中的包名却可以保持一样
在微信开放平台注册你的应用的时候,会提示让你填写应用包名,但实际上这个包名是你项目中build.gradle(:app)中的applicationId


wx.jpg

那么如果你的applicationId和项目包名不一致,可能就会出现WXEntryActivity没有收到回调的问题
但是如果你的微信分享正确集成了,无论WXEntryActivity有没有收到回调,分享应该是可以正常分享出去的

下面看如何解决因applicationId和项目包名不一致引发的WXEntryActivity回调问题:
使用<activity-alias/>标签重新定义WXEntryActivity的路径
...

    <activity
        android:name=".wxapi.WXEntryActivity"
        android:exported="true"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:taskAffinity="${applicationId}"
        android:theme="@style/Theme.YourTheme" />

    <activity-alias
        android:name="${applicationId}.wxapi.WXEntryActivity"
        android:exported="true"
        android:targetActivity=".wxapi.WXEntryActivity" />

...

注意targetActivity是你工程中WXEntryActivity的真实路径

顺带提一句,微信客户端6.7.2以上版本,开发者无法在获取用户是否真的分享成功


fx.png
上一篇下一篇

猜你喜欢

热点阅读