文章目录
一个很久没有大更新的app,接用户反馈购买课程微信支付不了,通过app、后端的日志查看,确实有多次选择微信下单却未支付的操作。后来在一同事手机上复现,(app提示微信未安装,事实上已经安装)经过很久的折腾,得到结论。app调用的 wxApi.isWXAppInstalled() 来判断微信是否安装。最终在腾讯文档中找到了说明,原因是Android 应用可见性,要求做适配。
Android 11 wxApi.isWXAppInstalled() 返回false
解决办法
以下方法任意一种都可以解决问题
1、在清单文件的添加queries标签
manifest节点添加如下内容:
<queries>
<package android:name="com.tencent.mm" />
</queries>
具体位置如下所示
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...">
<queries>
<package android:name="com.tencent.mm" />
</queries>
.....
</manifest>
由于是新的标签,因此需要升级开发工具,否则会出现编译错误:
1)Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;
2)Android SDK Build-Tools 需要升级至 30 及以上版本;
3)com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至最新的 3.6.4 版本。
2、增加权限
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
3、app的targetSdkVersion 改为29
这种方法也能解决上面问题,但实际上也留下了一个坑,时间一久,自己或其他小伙伴把apilevel 升上去,再次入坑。