Android 开发随笔-Android11 包可见性适配

最近在适配Android 11 设备的分享功能时,发现了一个小坑:因为我们应用有需要分享内容到WhatsApp的需求,最开始的思路是根据Intent

android.content.Intent.ACTION_SEND 来分享内容,在分享之前先检查是否有安装对应应用:
fun isContainPackName(mContext: Context, packName: String): Boolean {
var isContainPack = false
try {
val packageManager = mContext.getPackageManager()

val info = packageManager.getPackageInfo(packName, GET_ACTIVITIES)
if (info != null) {
isContainPack = true
}
} catch (e: NameNotFoundException) {
e.printStackTrace()
}

return isContainPack
}

在Android11以下的设备上用此方法都没有问题,但是在Android11设备上,上述方法就返回错误的结果了,尽管我手机上已经安装了WhatsApp,还是返回的false.

网上搜索一番,在官方文档上找到了相关的说明。根据官方文档的描述:

 

 

相当于需要在Android11上作特殊处理,这些应用才对我们可见。官方文档也给出了方法:

 

 因为知道WhatsApp的包名,就用了上述配置方法。

 

 经过测试确实可以正常分享了,但是我在最后多加了个权限android.permission.QUERY_ALL_PACKAGES 想的是当用户没有安装WhatsApp时可以去查找适合的应用,然而当加入了这个权限后导致应用在Google Play上搜索不到了 ,去掉后重新上架才回复正常。

查阅官方文档只发现了相关的一点内容:

 

踩坑完毕,总结来说在上架GooglePlay的应用 核对权限还是蛮重要的 ,一不小心就会受到限制。

 

posted @   Mr,Han  阅读(730)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示