Android接入微信SDK如何处理WXEntryActivity

微信接入WXEntryActivity 

  • 微信接入的官网:Android接入指南 | 微信开放文档
  • 微信SDK接入里面有这么一段说明:在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity(例如应用程序的包名为 net.sourceforge.simcpux,则新添加的类如下图所示)

并在 manifest 文件里面加上exported、taskAffinity及 launchMode 属性,其中 exported 设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:

<activity
    android:name=".wxapi.WXEntryActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true"
    android:taskAffinity="填写你的包名"
    android:launchMode="singleTask">
</activity>

遇到的问题

  • 如果安装官网这样接入,你的应用包名永远不变化,就不会出什么问题,一旦我们包名变更,那么我们就需要重构WXEntryActivity 的包名路径,这是一件很麻烦的事情,如果我们是做SDK开发,里面集成了微信,把WXEntryActivity 的包名路径写死了的话,接入方就没法使用我们的微信功能了

解决问题

  • android的AndroidManifest.xml提供了一个activity-alias标签,也就是Activity的别名标签,activity-alias可以目标Activity申明一个别名,要启动目标Activity就可以通过启动别名Activity来启动,根据activity-alias标签的属性功能,我们就可以这样做
            <activity
                android:name="com.mypkg.wechat.WXEntryActivity"
                android:exported="true"
                android:launchMode="singleTask"
                android:taskAffinity="${applicationId}"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
            <activity-alias
                android:name="${applicationId}.wxapi.WXEntryActivity"
                android:exported="true"
                android:targetActivity="com.mypkg.wechat.WXEntryActivity" />
  • 如果我们是做SDK开发的,com.mypkg.wechat.WXEntryActivity 这个类包名路径就可以写死了,直接将上面的配置打包为aar提供给接入方,接入方项目工程的build.gradle(app)配置的applicationId(即包名)会自动将AndroidManifest.xml中的${applicationId} 替换为设置的包名
  • 接入了很多SDK,他们的处理方式也是这样的比如B站、360、应用宝、爱奇艺、三星渠道SDK就是让我们按照类似上面的配置,因为他们聚合了微信SDK
  • 有兴趣了解activity-alias标签的作用的可以参考这篇文章activity-alias详解及应用_aspook的博客-CSDN博客_activityalias作用


 

猜你喜欢

转载自blog.csdn.net/qq_19942717/article/details/126391024
今日推荐