美文网首页Android适配
Android 11.0 适配——软件包可见性过滤/获取应用列表

Android 11.0 适配——软件包可见性过滤/获取应用列表

作者: 渐渐懂了吧 | 来源:发表于2022-12-06 23:48 被阅读0次

    前言

    在Android 11上有很多的更新都是用来保护隐私的,之前使用的来获取安装的应用列表的方法,在targetSdkVersion 30及以上则会失效,系统会自动过滤这些信息,经测试只能获得自己当前使用的应用包名及系统的一些应用包名(系统会自动让部分应用可见,以便我们的应用可与其交互),想要了解具体的信息,可以到下方的地址去查看:

    As of Android 11, this method no longer returns information about all apps; see https://g.co/dev/packagevisibility
    
    image.png
    先看看如何获取安装的应用列表
            List<ApplicationInfo> infos = getPackageManager().getInstalledApplications(0);
            for (ApplicationInfo info : infos) {
                Log.e("yzt", info.packageName);
            }
    
    再看看Android 11.0及以上如何适配,其实有3种方法可以查询别的应用包名
    如果已经知道想交互的应用包名,可以这么做:

    在Android的AndroidManifest.xml的<manifest>之下加入<queries>标签,并且在其中使用<package>来声明想要交互的应用包名,比如这里写的是微信和QQ的包名,也就是遍历时能找到微信和QQ

        <queries>
            <package android:name="com.tencent.mm" />
            <package android:name="com.tencent.mobileqq" />
        </queries>
    
    如果已经知道能相应特定Intent的应用,可以这么做:

    同样的,在Android的AndroidManifest.xml的<manifest>之下加入<queries>标签,并且在其中使用<package>来声明有对应Intent功能的应用,比如在这里写的是具有图片分享功能的Intent,遍历时找到了飞猪等包名。需要注意的是<intent>中只能有一个<action>元素,并且<data>中也只能有mimeType,scheme和host这些属性。

        <queries>
            <intent>
                <action android:name="android.intent.action.SEND" />
                <data android:mimeType="image/png" />
            </intent>
        </queries>
    
    看到有作者提到直接使用android.intent.action.MAIN这个action就可以获取安装的应用列表,经测试确实可以,真是机智,几乎所有的应用都有这个action吧。
        <queries>
            <intent>
                <action android:name="android.intent.action.MAIN" />
            </intent>
        </queries>
    
    最后是希望查询所有应用,那就需要申请权限了:
        <uses-permission
            android:name="android.permission.QUERY_ALL_PACKAGES"
            tools:ignore="QueryAllPackagesPermission" />
    

    结尾

    当然也可以选择维持在targetSdkVersion在30以下,这样就暂时不用适配,具体还是看项目的要求。

    相关文章

      网友评论

        本文标题:Android 11.0 适配——软件包可见性过滤/获取应用列表

        本文链接:https://www.haomeiwen.com/subject/dfcwfdtx.html