PackageManager获取应用列表

Android 获取应用签名 本文主要讲下在android中如何获取应用签名. 也方便平时用来区分一个应用是不是原包应用. 阅读详情

通过 PackageInfo  获取具体信息方法:
包名获取方法:packageInfo.packageName

icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)

应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)

使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS)

.requestedPermissions


通过 ResolveInfo 获取具体信息方法:
包名获取方法:resolve.activityInfo.packageName

icon获取获取方法:resolve.loadIcon(packageManager)

应用名称获取方法:resolve.loadLabel(packageManager).toString()

用PackageManager可获取所有可启动主Activity,可启动主Activity都带有包含MAIN操作(action)和LAUNCHER类别(category)的intent过滤器(intent-filter)。即在AndroidManifest.xml文件中注册了main 和launcher的activity。

private void setupAdapter(){

Intent startupIntent = newIntent(Intent.ACTION_MAIN);

startupIntent.addCategory(Intent.CATEGORY_LAUNCHER);

/**使用了Fragment,所以调用getActivity()获取当前上下文Context**/

final PackageManager packageManager = getActivity().getPackageManager();

/**获取匹配的activity列表**/

List<ResolverInfo> activities = packageManager.queryIntentActivities(startupIntent,0);

}

##获取启动应用后与未卸载比较

public List<AppInfo> queryFilterAppInfo() {
        pm = context.getPackageManager();
 
    // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
    List<ResolveInfo>  resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
 
    Set<String> allowPackages=new HashSet();
    for (ResolveInfo resolveInfo:resolveinfoList){
        allowPackages.add(resolveInfo.activityInfo.packageName);
    }
    debug("allowPackages = " + allowPackages);
 
    // 查询所有已经安装的应用程序,GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的
    List<ApplicationInfo> applicationInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
    List<AppInfo> appInfos = new ArrayList<AppInfo>();
 
    for (ApplicationInfo info : applicationInfos) {
        if (allowPackages.contains(info.packageName)){
            AppInfo appInfo = new AppInfo();
 
            //获取应用的名称
            String app_name = info.loadLabel(pm).toString();
            appInfo.setApp_name(app_name);
 
            //获取应用的包名
            String packageName = info.packageName;
            appInfo.setPackagename(packageName);
 
            appInfos.add(appInfo);
        }
    }
    debug("appInfos = " + appInfos);
    return appInfos;

}

要创建启动activity的显示intent,需要从ResolveInfo对象中获取activity的包名与类名,这些信息可以从ResolveInfo对象的ActivityInfo中获取。下面创建一个显示intent并启动目标activity


 

public void onClick(View v) {

/**mResolveInfo就是之前获取的activities**/

ActivityInfo activityInfo = mResolveInfo.activityInfo;

Intent i = newIntent(Intent.ACTION_MAIN)

.setClassName(activityInfo.applicationInfo.packageName, activityInfo.name)

/**为了在启动新activity时启动新任务,需要为intent添加一个标志

FLAG_ACTIVITY_NEW_TASK标志控制每个activity仅创建一个任务**/

.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(i);

ResolveInfo类

        说明:根据<intent>节点来获取其上一层目录的信息,通常是<activity>、<receiver>、<service>节点信息。

       常用字段:

             public  ActivityInfo  activityInfo     获取 ActivityInfo对象,即<activity>或<receiver >节点信息

             public ServiceInfo   serviceInfo     获取 ServiceInfo对象,即<service>节点信息

       常用方法: 

             Drawable loadIcon(PackageManager pm)             获得当前应用程序的图像

             CharSequence loadLabel(PackageManager pm)  获得当前应用程序的label

Android应用开发中如何过滤掉特定的应用程序? 在Android开发中,有时候我们需要获取设备上安装的应用程序列表,并进行一些操作,例如展示列表、筛选或过滤应用。本文将介绍如何通过使用PackageManager(应用管理器)类实现获取应用程序列表并过滤掉特定应用的功能。通过使用PackageManager类,我们可以方便地获取设备上已安装的应用程序,并进行筛选或过滤操作。接下来,我们可以遍历这个列表,并根据需要进行筛选或过滤。除了根据包名和应用类型进行过滤外,我们还可以结合其他条件进行过滤,例如应用名称、版本号等。,其中仅包含不被阻止的应用程序。 阅读详情

相关推荐

Android应用列表查询与管理:获取手机安装的应用

Android系统中的应用列表是核心功能之一,它提供了关于安装在设备上的所有应用程序的详细信息。这些信息包括但不限于应用的名称、图标、版本号、权限需求、安装时间等。这些信息通常由系统的PackageManager服务管理。是Android系统中一个非常重要的类,它提供了对应用程序包进行管理的接口。开发者可以通过来查询应用程序的相关信息,比如应用的权限、版本号、图标等,也可以进行安装、卸载、更新应用程序等操作。提供的功能主要分为以下几类:应用信息检索:允许开发者查询已安装应用的详细信息。

weixin_42581846的博客 1337

Android 获取手机第三方应用列表

往往我们需要对手机装了哪些第三方应用,那么第三方应用列表怎么获取呢? 如下: private List getThirdAppList(Context context) { PackageManager packageManager = context.getPackageManager(); List packageInfoList = p

dhl_1986的博客 5471

Android应用管理器:获取安装应用列表的完整指南

PackageManager类是Android系统中一个非常重要的组件,它是用于管理和获取应用程序信息的API。此类提供了大量方法来查询系统中的安装应用,包括它们的权限、版本、组件等。开发者可以利用它来实现各种功能,例如列出已安装的应用、检测应用的安装状态、获取应用的图标和名称等。此外,它还可以用来解析Intent,以确定哪些应用能够响应给定的Intent。PackageManager是深入了解应用管理以及实现应用市场和安全检查等功能不可或缺的工具。

weixin_30661119的博客 1514

context.getPackageManager().getApplicationInfo()异常处理

context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);异常处理 1.检测是否已安装了指定包名的第三方app 通过上面代码可以去判断当前设备是否已经安装了该包名的第三方app。如果不抛异常,说明这设备已经安装了。如果未安装,就一定会抛异常。 但是,发现,在android11以及更高版本的手机中,即使已经安装了该包名的app,也仍然会抛异常: android.co

guan2android的博客 5618

DDSP(Differentiable Digital Signal Processing) 开篇

文章目录DDSP可以用来做什么?下一步工作 工作中接触到了DDSP声码器,但非科班出声的我对这块知识非常陌生,甚至带有一些畏惧的心理,但是为了工作为了进步,必须硬下头皮去啃,相信只要耐心地坚持,没什么能难到我。于是从今天开始,就用这个博客专栏来记录我的学习历程,希望也能帮助到你~ DDSP对应的论文是:DDSP: Differentiable Digital Signal Processing 先翻译一篇来自DDSP论文作者的对DDSP的介绍的文章。 今天,我们很高兴地介绍可微数字信号处理(DDSP)库。

YeeKo的博客 9248

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1922

PackageManager解析

PackageManager:管理应用程序包功能: 安装,卸载应用 查询permission相关信息 查询Application相关信息(application,activity,receiver,service,provider及相应属性等) 查询已安装应用 增加,删除permission 清除用户数据、缓存,代码段等 使用方法:在Android中,为应用包的安装,删除各种操作服务的,是Packa

扣子Coze大师班 1万+

SMPTE ST 2110 概论(一)

SMPTE ST 2110 概论(一)前言ST 2110与ST 2022-6ST 2110-10:基本结构与时序ST 2110-20:未压缩的视频流后续 前言 这是一份我在实习期间制作的,关于SMPTE ST 2110的简单介绍。 这篇文章主要以梳理总结 SMPTE ST 2110 的概念为主,关于具体的内容,比如IP数据报的格式、RTP时间戳的具体代码内容等等,大家可以查阅 SMPTE ST 2...

Cidd0422的博客 2万+

PackageManager简介

/** * PackageManager介绍: * 本类API是对所有基于加载信息的数据结构的封装,包括以下功能: * 安装,卸载应用 查询permission相关信息 查询Application相关 * 信息(application,activity,receiver,service,provider及相应属性等)

1169

基于MCP协议的AssistAI:深度集成Eclipse的AI编程助手实战指南

在AI辅助编程领域,大型语言模型(LLM)与开发工具的深度集成是提升开发效率的关键。其核心原理在于通过标准化的协议(如MCP,Model Context Protocol),将IDE的功能封装为AI可调用的工具集,从而实现环境感知与操作同步。这项技术的价值在于打破了传统AI编程工具与开发者工作流的割裂,使AI能够以符合工程规范的方式直接操作项目,如进行代码重构、运行测试和交互式调试。其典型应用场景包括复杂代码导航、自动化测试生成与精准的增量编译。本文以Eclipse插件AssistAI为例,详细解析了如何通

weixin_42531579的博客 562

【人工智能】在 cc-switch 中配置 AnyRouter 接入 Claude Code 完整指南

本文介绍了在cc-switch工具中配置AnyRouter中转服务以接入Claude Code的详细步骤。主要内容包括:1) 准备API令牌和端点地址;2) 填写基础信息和模型参数;3) 保存配置并重启终端生效;4) 常见问题排查方法。重点强调了API地址格式、模型ID准确性以及配置写入的必要性,帮助用户顺利完成中转服务配置,实现Claude 4.5版本的正常使用。

奶爸的编程之路,也就一周冷个三天 3106

Android-PackageManager-获取手机所有应用列表

需求 接口 Context | Android Developers Public methods public abstract PackageManager getPackageManager () PackageManager | Android Developers Public methods public List<ResolveInfo> queryIntentActivities (Intent intent, public abstract...

深度安全实验室 2145

NVIDIA Isaac GR00T N1 人形机器人强化学习入门教程(二)详细步骤

LeRobot 格式 1.1 加载数据集 要加载数据集,我们需要定义以下 3 项内容: 在数据中显示图像帧 我们还可以对 LeRobotSingleDataset 类中的数据进行一系列转换。下面展示了如何对数据进行转换。 现在看看应用转换后的数据有何不同。 例如,对状态和操作进行规范化和串联,对视频图像进行裁剪、调整大小和颜色抖动。 二、GR00T 推断 本教程介绍如何使用 GR00

2506_90492529的博客 3014

获取全部应用列表

有时需对已安装的应用进行管理 , 这里我简单的写了获取应用程序列表。 代码如下: package com.lml.applicationtest; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.pm.Packag...

iteye_16135的博客 264

YOLOv13改进策略【Neck】| CVPR2024 LGAG:大核分组注意力门模块,3×3分组卷积与注意力协同的特征精准融合

本文记录的是利用LGAG 模块改进 YOLOv13 的颈部融合部分。(Large-kernel Grouped Attention Gate)通过3×3分组卷积与注意力机制结合,引导解码器处理特征与跳接特征的精准融合。本文利用模块,通过3×3分组卷积扩大感受野以捕捉更广泛局部空间上下文,同时结合注意力机制生成自适应注意力系数,对YOLOv13中关键目标特征赋予高激活值、抑制冗余背景特征,在特征融合阶段实现全局语义与局部细节的高效结合,减少计算成本的同时提升特征表达能力,增强模型对复杂场景下目标的检测精度与效

Limiiiing的博客 105

一、OpenSM 架构部署及原理详解

OpenSM 是 InfiniBand 网络的核心组件,通过自动化的拓扑发现、路由计算和状态维护,确保网络的高效运行。部署时需关注配置文件参数、路由算法选择和高可用性设计,调试时可借助日志和诊断工具快速定位问题。

jundao1997的专栏 1131

Android实现获取系统应用列表

本文介绍在Android中如何获取系统应用程序列表。   Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过它,我们就可以获取应用程序信息。     PackageMan

Chuekup的专栏 1170

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

http://blog.youkuaiyun.com/feng88724/article/details/6198446点击打开链接

起风了 780

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 获取应用列表,获取全部应用列表

有时需对已安装的应用进行管理 , 这里我简单的写了获取应用程序列表。代码如下:package com.lml.applicationtest;import java.util.List;import android.app.Activity;import android.content.Context;import android.content.pm.PackageInfo;import and...

weixin_39755853的博客 4111

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

小辣鸡的Android开发之路-应用冻结器-1-Package信息的获取

用安卓2.3-5.1的人,都知道国产毒瘤应用在后台的占用是多么的令人恶心。自6.0之后的版本,安卓对应用后台管理作出了更大的优化。在安卓7.0、8.0之后,伴随着新手机运存的不断增大,似乎大家都不用去管理在后台的应用了。但是作为一枚初学Android的小辣鸡,仍想做一款应用冻结的App。所以本系列文章主要讲述怎么实现一个简单应用冻结App。

一只小辣鸡的开发之路 376

Android 调用系统默认的应用程序列表界面

Intent it = new Intent(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName on = new ComponentName("com.android.launcher", "com.android.launcher2.Launcher");//com.android.la

z358247505的专栏 1565

android获取应用列表

android中获得应用程序列表很简单,主要使用PackageManager就可以。 例如:如何获得第三方应用程序列表,即已经安装的应用程序列表,可以这样做: PackageManager pm = mContext.getPackageManager(); List mPacks = pm.getInstalledPackages(0); for(PackageInfo info : m

happy++, worry-- 3750

android获取已安装包名需要的权限,Android-读取已安装应用列表

title: Android-读取已安装应用列表date: 2019-12-02 11:54:53categories:- Androidtags:- App本文将通过读取已安装应用列表,如何获取应用列表,和为什么要获取已安装应用列表展开。Android 读取已安装应用列表需要申请权限吗?Android 如何完整的获取到用户已安装应用列表为什么安卓的APP都要读取手机中已安装的应用列表结合上述三篇...

weixin_33198642的博客 2246

android读取应用列表权限,Android获取系统应用及安装应用的权限列表

主要通过PackageManager中的方法代码:public class InstallApps extends ListActivity {HashMap map=new HashMap();List packagelist=new ArrayList();List systemApp=new ArrayList();protected void onCreate(android.os.Bun...

weixin_35972313的博客 5958

android 获取系统所有应用程序,Android实现获取系统应用列表

本文介绍在Android中如何获取系统应用程序列表。Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过它,我们就可以获取应用程序信息。PackageManager的功能:•安装,卸载应用•查询p...

weixin_42365303的博客 1766
上一篇: wpfGauge仪表盘库及winForm中使用WPF控件
下一篇: Android自定义控件(1)--自定义View
HanZhizhi
博客等级 码龄11年 297粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值