Android App安装列表获取方法(实践方案)

2025-03-21 02:50

本文主要是介绍Android App安装列表获取方法(实践方案),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl...

前言

Android 系统在 Android11时,对获取app列表方案做了很大调整,需要对Android 11上下版本兼容,尤其是Andjsroid15上做出了大的变动。

实现方案         

方案概述

  &nbshttp://www.chinasem.cnp;             获取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:建议使用)

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN"/>
    </intent>
    <intent>
        <action android:name="com.appsflyer.referrer.INSTALL_PROVIDER"/>
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="https"/>
    </intent>
    <intent>
        <action android:name="android.support.customtabs.action.CustomTabsService"/>
    </intent>
    <intent>
        <action android:name="android.intent.action.DIAL"/>
    </intent>
</queries>

二、API代码        js 

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

PackageManager.getInstalledPackages

优点:

  • 配合权限可以获取手机全部安装列表 。
  • 配合action可获取到大部分已安装app(个别系统应用获取不到)         

缺点:

  • 部分类型应用,google禁止使用QUERY_ALL_PACKAGES权限,如果app内添加此权限,js会被拒绝上架,例如:金融类型app。
  • Android15开始 +getInstalledPackagesAPI 获取不到除app本身外的任何已安装app。
  • Android15对白名单package开始限制在1000以内,超过这个数量,手机无法安装应用。(用于不添加权限)eg:
<manifest >
      China编程  <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方式

到此这篇关于Android App安装列表获取的文章就介绍到这了,更多相关Android App安装列表获取内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于Android App安装列表获取方法(实践方案)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153862

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二