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的应用 核对权限还是蛮重要的 ,一不小心就会受到限制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库