美文网首页
Android 关于微信分享WXEntryActivity回调问

Android 关于微信分享WXEntryActivity回调问

作者: 母老虎饲养员 | 来源:发表于2023-03-12 11:22 被阅读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

    相关文章

      网友评论

          本文标题:Android 关于微信分享WXEntryActivity回调问

          本文链接:https://www.haomeiwen.com/subject/mxwfrdtx.html