Android App安装列表获取

[复制链接]
发表于 2025-10-12 04:51:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次

媒介
实现方案
        方案概述
一、 AndroidManifest 三种设置方式
        1、方案一(权限:不发起利用)
        2、方案二(白名单:如果白名单在1000以内,发起利用,1000及以上不发起利用)
        3、方案三(action:发起利用)
二、API代码
        1、方案一(已废弃方案,Android15以下)
        长处:
        缺点:
        2、方案二 (发起利用,但获取到的app列表比力少,大部分非体系应用都可以获取,凌驾半数的体系应用获取不到),与action共同利用,也可以action与白名单混淆利用
         长处:
        缺点:
总结


媒介

Android 体系在 Android11时,对获取app列表方案做了很大调解,必要对Android 11上下版本兼容,尤其是Android15上做出了大的变更。
实现方案

        方案概述

                获取app安装列表,重要有两个地方代码必要设置:
                一、在AndroidManifest.xml中添加设置,设置分为权限、白名单、action 三种
                二、在利用前面恣意一种设置后,通过API(Java or Kotlin代码)获取安装列表,也有两种API可利用
一、 AndroidManifest 三种设置方式

        1、方案一(权限:不发起利用)

                   
  权限设置:
  <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
          2、方案二(白名单:如果白名单在1000以内,发起利用,1000及以上不发起利用)

   <manifest >
          <queries>
                   <package android:name="com.google.gson"/> 
          </queries>
  <manifest >
          3、方案三(action:发起利用)

  
  1. <queries>
  2.     <intent>
  3.         <action android:name="android.intent.action.MAIN"/>
  4.     </intent>
  5.     <intent>
  6.         <action android:name="com.appsflyer.referrer.INSTALL_PROVIDER"/>
  7.     </intent>
  8.     <intent>
  9.         <action android:name="android.intent.action.VIEW"/>
  10.         <category android:name="android.intent.category.BROWSABLE"/>
  11.         <data android:scheme="https"/>
  12.     </intent>
  13.     <intent>
  14.         <action android:name="android.support.customtabs.action.CustomTabsService"/>
  15.     </intent>
  16.     <intent>
  17.         <action android:name="android.intent.action.DIAL"/>
  18.     </intent>
  19. </queries>
复制代码
二、API代码

        1、方案一(已废弃方案,Android15以下)

   PackageManager.getInstalledPackages
          长处:


  • 共同权限可以获取手机全部安装列表 。
  • 共同action可获取到大部分已安装app(个别体系应用获取不到)
        缺点:


  • 部分范例应用,google克制利用QUERY_ALL_PACKAGES权限,如果app内添加此权限,会被拒绝上架,比方:金融范例app。
  • Android15开始 +getInstalledPackagesAPI 获取不到除app本身外的任何已安装app。
  • Android15对白名单package开始限定在1000以内,凌驾这个数量,手机无法安装应用。(用于不添加权限)eg:
   <manifest >
          <queries>
                   <package android:name="com.google.gson"/> 
          </queries>
  <manifest >
          4.Android11开始,google play 不再发起利用这种方式,Android 15开始这个api通过action方式获取不到app列表了,
        2、方案二 (发起利用,但获取到的app列表比力少,大部分非体系应用都可以获取,凌驾半数的体系应用获取不到),与action共同利用,也可以action与白名单混淆利用

    PackageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
           长处:

        没有体系适配的限定
        缺点:

        获取到的列表不全
总结


  • 如果可以利用权限,则利用权限+getInstalledPackages 方案没有标题。
  • 如果不可以利用权限,必要查询的白名单少,可以利用 Manifest第二种设置方案+getInstalledPackages
  • 如果白名单凌驾了999个包名,则发起利用 action方式+白名单+queryIntentActivities方式
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表