按照微信的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
网友评论