iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android 获取 应用列表 方法记录
  • 882
分享到

Android 获取 应用列表 方法记录

androidjavaandroidstudio 2023-08-17 07:08:56 882人浏览 安东尼
摘要

前言 有时,我们需要获取设备上的 应用列表, 例如获取 所有已安装的 或者 能够显示在 桌面上的APK. 基于这些列表,我们可以做一些管理功能, 例如权限展示等的. 1. 获取所有已安装的应用 简单起见, 仅返回每个应用的包名 //

前言

有时,我们需要获取设备上的 应用列表,
例如获取 所有已安装的 或者 能够显示在 桌面上的APK.
基于这些列表,我们可以做一些管理功能, 例如权限展示等的.

1. 获取所有已安装的应用

简单起见, 仅返回每个应用的包名

    //{@ - 获取所有安装的APK (MATCH_UNINSTALLED_PACKAGES 表示未卸载的APK, 包括APK已被删除但是保留数据的)    // 需要获取所有apk 添加permission     private List getInstalledPackages(Context context) {        List installedPackageList = new ArrayList<>();        List installedPackageInfoList = context.getPackageManager().getInstalledPackages(PackageManager.MATCH_UNINSTALLED_PACKAGES);        for (PackageInfo packageInfo: installedPackageInfoList) {            installedPackageList.add(packageInfo.packageName);        }        return installedPackageList;    }    //@}

这里需要注意, 在AndroidManifest 需要加上权限声明,否则只能获取部分应用.

2. 获取所有 能够显示在 桌面上的 应用

简单起见, 仅返回每个应用的包名

    //{@add - 获取所有带有桌面属性的APK -    // 需要获取所有apk 添加permission     private List getAllLauncherIconPackages(Context context) {        List launcherIconPackageList = new ArrayList<>();        Intent intent = new Intent();        intent.setAction(Intent.ACTION_MaiN);        intent.addCateGory(Intent.CATEGORY_LAUNCHER);        //set MATCH_ALL to prevent any filtering of the results        List resolveInfos = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_ALL);        for (ResolveInfo info: resolveInfos) {            launcherIconPackageList.add(info.activityInfo.packageName);        }        return launcherIconPackageList;    }    //@add}

这里需要注意, 在AndroidManifest 需要加上权限声明,否则只能获取部分应用.

3. 测试api

方便测试上述API, 增加了一个单独函数

    private void printPackages(List packagesList, String packageTag){         if (packagesList == null) {             Log.d(TAG, packageTag + " packagesList is null" );             return;         }        int packageSize = packagesList.size();        Log.d(TAG, packageTag + " packageSize=" + packageSize);        for (int index = 0; index < packageSize; index++) {            Log.d(TAG, "The " + index + " package is: " + packagesList.get(index));        }    }

则可以调用(this 是在一个Activity里传递):

        List installedPackages = getInstalledPackages(this);        printPackages(installedPackages, "installed");        List launcherIconPackages = getAllLauncherIconPackages(this);        printPackages(launcherIconPackages, "launcherIcon");

则会得到如下输出:

19.096 9446 9446 AppListActivity: installed packageSize=455
14:40:19.096 9446 9446 AppListActivity: The 0 package is: com.google.android.networkstack.tethering

14:40:19.114 9446 9446 AppListActivity: launcherIcon packageSize=66
14:40:19.114 9446 9446 AppListActivity: The 0 package is: com.android.gallery3D

4. 拓展

我们可以根据获取到的 resolveInfos , 即
List resolveInfos = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_ALL);

然后 根据 resolveInfo.activityInfo 去获取每个 应用的 PackageInfo对象
进而获取到它所声明的所有 permissions.
例如:

ActivityInfo ai = resolveInfo.activityInfo;PackageInfo pi = pm.getPackageInfo(ai.packageName, PackageManager.GET_PERMISSIONS);if (ai.enabled && ai.exported && pi.requestedPermissions != null) {      // 这里可以对 应用所声明的权限 做分类, 例如哪些是 涉及 用户隐私的.}

注意, 这里的 pi.requestedPermissions 包括应用本身 以及它 依赖的aar 包里声明的所有权限,
即在AndroidManifest 里有这些:

链接:https://www.jianshu.com/p/5d3fa474c17d
作者:行走中的3卡

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

扫描下方二维码免费领取~

在这里插入图片描述
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

全套视频资料:

一、面试合集
在这里插入图片描述
二、源码解析合集

在这里插入图片描述
三、开源框架合集

在这里插入图片描述

欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓

来源地址:https://blog.csdn.net/Misdirection_XG/article/details/128713430

--结束END--

本文标题: Android 获取 应用列表 方法记录

本文链接: https://www.lsjlt.com/news/372496.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 获取 应用列表 方法记录
    前言 有时,我们需要获取设备上的 应用列表, 例如获取 所有已安装的 或者 能够显示在 桌面上的APK. 基于这些列表,我们可以做一些管理功能, 例如权限展示等的. 1. 获取所有已安装的应用 简单起见, 仅返回每个应用的包名 //...
    99+
    2023-08-17
    android java android studio
  • Android获取wifi列表的方法
    本文实例为大家分享了Android获取wifi列表的具体代码,供大家参考,具体内容如下 接着上篇的获取蓝牙列表,这次我们来获取android设备的wifi列表,话不多少直接上代码! ...
    99+
    2024-04-02
  • Android应用获取设备序列号的方法
    软硬件环境 Macbook Pro MGX 72 Android studio 2.1.2 Android 5.1.1前言上一篇介绍了如何获取ethernet的MAC地址,对于厂商来讲,除了MAC号,还有一项数据也很重要,那就是机器序...
    99+
    2023-05-31
    android 设备 序列号
  • Android获取蓝牙设备列表的方法
    最近换了一家公司,主要内容是做关于移动端室内定位的相关sdk,刚进来的时候信心满满,誓要干出一番天地!!!结果进来快一个多月了,根本没轮到我施展拳脚,给我搁置在一旁自己弄自己的。行吧...
    99+
    2024-04-02
  • 分享应用列表怎么在Android应用中获取
    分享应用列表怎么在Android应用中获取?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android获取分享应用列表  1、布局:popup_share....
    99+
    2023-05-31
    android roi
  • Android 获取手机已安装的应用列表(适配)
    权限 加上权限才能获取到所有的应用 获取代码 public static boolean hasApplication(Context context, String packageName) { Package...
    99+
    2023-09-01
    android java 开发语言
  • android获取本地视频列表
    要获取本地视频列表,可以使用MediaStore类来查询MediaStore.Video.Media表。以下是一个示例代码:```j...
    99+
    2023-09-23
    Android
  • 获取Android设备序列号的方法
    获取Android设备序列号的方法 在Android应用开发中,有时我们需要获取设备的唯一标识,例如设备序列号。设备序列号是一个字符串,可以用于标识特定的Android设备。本文将介绍如何在Andro...
    99+
    2023-10-11
    android Android
  • C#获取打印机列表方法介绍
    方法一 第一步:添加引用 using System.Printing; 第二步:代码 public static List<string> GetPrintList() ...
    99+
    2024-04-02
  • 实现ADO.NET记录集获取记录数量的方法是什么
    本篇文章给大家分享的是有关实现ADO.NET记录集获取记录数量的方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。VC使用ADO技术访问数据表,打开数据表后,获得了ADO...
    99+
    2023-06-17
  • php如何获取类方法的参数列表
    这篇文章主要介绍“php如何获取类方法的参数列表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何获取类方法的参数列表”文章能帮助大家解决问题。php中,可用func_get_args()函数...
    99+
    2023-06-29
  • python获取文件列表的方法是什么
    在Python中,可以使用`os`模块的`listdir()`函数来获取指定目录下的文件列表。以下是一个示例代码:```python...
    99+
    2023-09-17
    python
  • php获取文件列表的方法有哪些
    使用PHP的glob()函数可以获取满足指定模式的文件列表,例如: $files = glob('path/to/di...
    99+
    2024-03-02
    php
  • SQLServer中怎么获取表的记录总数
    SQLServer中怎么获取表的记录总数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  SQLServer中如何快速获取表的记录总数  我们...
    99+
    2024-04-02
  • Android 应用获取签名MD5
     生成Android平台签名证书(.keystore)生成指南 根据uniapp官方的文档生成签名后,查看当前证书信息: keytool -list -v -keystore test.keystore 会输出以下格式信息: 会发现证...
    99+
    2023-09-11
    笔记
  • Android 获取应用sha1和sha256
    在 Android 应用开发中,SHA-1(Secure Hash Algorithm 1)值是一种哈希算法,常用于生成应用的数字签名。这个数字签名用于验证应用的身份,并确保应用在发布到设备上时没有被篡改。 以下是生成 Android 应用...
    99+
    2023-10-20
    android
  • Java编程获取文件列表及子文件目录的方法(非递归)
    废话不谈,直接进入正题,理解见代码注释。// 非递归 public List<String> scanFiles(String path) { List<String>filePaths = new Arra...
    99+
    2023-05-30
    java 获取文件目录 ava
  • 从PySpark中的字符串获取列表方法讲解
    在 PySpark 中是否有类似eval的功能。 我正在尝试将 Python 代码转换为 PySpark 我正在查询一个数据框,并且其中一列具有数据,如下所示,但采用字符串格式。 ...
    99+
    2024-04-02
  • python随机获取列表中某一元素的方法
    目录1、利用Python中的random模块中的choice方法2、利用Python中的random模块中的randrange方法3、利用Python中的random模块中的rand...
    99+
    2023-02-16
    python随机获取列表元素 python随机获取元素
  • Python 获取目录下的文件列表与内容
    下面的python例子是列举用户目录下面的文件 import os import sys #info=os.getcwd() #listfile=os.listdir(os.getcwd()) inf...
    99+
    2023-01-31
    文件列表 内容 目录下
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作