我是靠谱客的博主 端庄白昼,最近开发中收集的这篇文章主要介绍Android 11 软件包可见性(Package Visibility)适配,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

软件包可见性只是对有些场景有影响的。总的来说就是,只要是查询别的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)适配所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部