概述
软件包可见性只是对有些场景有影响的。总的来说就是,只要是查询别的app的信息都会受到影响的。Apps that are visible automatically 中说明了哪些情况下软件包可见性是自动获取的。
startActivity() method is unaffected by the system’s package visibility behavior, you don’t need to add a element to your app’s manifest.
Open URLs in a browser or other app
实践
- getPackageInfo
PackageManager中的方法是受到软件包可见性影响的。
Note: If your app targets Android 11 (API level 30) or higher, the methods in this class each return a filtered list of apps. Learn more about how to manage package visibility.
在项目中经常会使用getPackageInfo传入包名来判断一个app是否安装,target 30的app在Android 11手机上,这个方法就会抛出NameNotFoundException
,实际查询的app是存在的。做分享或第三方支付的时候,这个函数调用很常用。那么要怎么解决这个问题呢?
解决办法就是在Manifest的中配置需要查询的包名,问题是这种包名很多,工作量大而且容易漏掉。有个简便的方式,如下配置
<queries>
<intent>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent>
</queries>
- getInstalledPackages
这个函数是受软件包可见性影响的,不在中配置,很多app被过滤掉了
参考
Android 11 中的软件包可见性
重要变更 | Android 11 中的软件包可见性
最后
以上就是端庄白昼为你收集整理的Android 11 软件包可见性(Package Visibility)适配的全部内容,希望文章能够帮你解决Android 11 软件包可见性(Package Visibility)适配所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复