获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载

获取所有应用及相关信息

方法1:ResolveInfo

获取全部应用:
	PackageManager packageManager = getPackageManager();
	Intent mIntent = new Intent(Intent.ACTION_MAIN, null);
	mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
	List<ResolveInfo> listAllApps = packageManager.queryIntentActivities(mIntent, 0);
判断是否系统应用:
	ResolveInfo appInfo = listAllApps.get(position);
	String pkgName = appInfo.activityInfo.packageName;//获取包名
	//根据包名获取PackageInfo mPackageInfo;(需要处理异常)
	mPackageInfo = mContext.getPackageManager().getPackageInfo(pkgName, 0);
	if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
		    //第三方应用
		} else {
		    //系统应用
		}
获取相关信息:
ResolveInfo mResolveInfo ;
获取包名: mResolveInfo.activityInfo.packageName;
获取icon: mResolveInfo.loadIcon(packageManager);
获取应用名: mResolveInfo.loadLabel(packageManager).toString();

方法2:PackageInfo

获取全部应用:
PackageManager packageManager = this.getPackageManager();
List<PackageInfo> packageInfoList = packageInfoList .getInstalledPackages(0);
判断是否系统应用:
 List<PackageInfo> apps = new ArrayList<PackageInfo>();
 for (int i = 0; i < packageInfoList.size(); i++) {
            PackageInfo pak = (PackageInfo)packageInfoList.get(i);
            //判断是否为系统预装的应用
            if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
                // 第三方应用
                apps.add(pak);
            } else
		{
		//系统应用
		}
        }
获取相关信息:
PackageInfo mPackageInfo;
获取包名: mPackageInfo.packageName
获取icon: mPackageInfo.getApplicationIcon(applicationInfo);
获取应用名: mPackageInfo.getApplicationLabel(applicationInfo);
获取使用权限:
mPackageInfo.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions;

监听应用的安装和卸载:

//////////////注册广播,监听安装和卸载
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
//获取安装应用的包名
String packageName = intent.getDataString();
} else if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
//获取卸载应用的包名
String packageName = intent.getDataString();
}
}

获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载

时间: 2024-08-01 15:37:18

获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载的相关文章

linux系统实现多个进程监听同一个端口

通过 fork 创建子进程的方式可以实现,其他情况下不行. 当连接到来时,子进程.父进程都可以 accept, 这就是著名的"惊群"问题(thundering herd problem). 惊群现象 在该模型下(多个子进程同时共享监听套接字)即可实现服务器并发处理客户端的连接.这里要注意的是,计算机三次握手创建连接是在内核进程里完成的,不需要应用服务进程参数的,而服务进程仅仅要做的是调用accept将已建立的连接构建对应的连接套接字connfd(可参考 http://blog.csdn

[Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备

MySQL Binlog简介 什么是binlog? 一个二进制日志,用来记录对数据发生或潜在发生更改的SQL语句,并以而进行的形式保存在磁盘中. binlog 的作用? 最主要有3个用途: 数据复制(主从同步) Mysql 的Master-Slave协议,让Slave可以通过监听binlog实现数据复制,达到数据一致性目的 数据恢复 通过mysqlbinlog工具恢复数据 增量备份 Binlog 变量 log_bin (Binlog 开关,使用show variables like 'log_b

Linux系统 端口知识以及相关监听工具

在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型. 物理端口指的是物理存在的端口,如ADSL Modem.集线器.交换机.路由器上用 于连接其他网络设备的接口,如RJ-45端口.SC端口等等.逻辑端口指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等.由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号 一.端口按端口号可以分为3大类:-------

判断exe执行结束,事件监听

[转载]C#调用Exe文件的方法及如何判断程序调用的exe已结束     原文地址:C#调用Exe文件的方法及如何判断程序调用的exe已结束作者:guoguo 很简单的代码就可以实现C#调用EXE文件,如下: 1.引入using System.Diagnostics;调用代码:Process.Start(exe文件名); 2.直接System.Diagnostics.Process.Start(exe文件名). C#如何判断程序调用的exe已结束 二个方法:以运行系统记事本为例 方法一:这种方法

获取元素样式对象 页面滚出 页面可是大小 添加监听事件 获取事件参数浏览器中位置 的兼容

/** * 获取浏览滚动出去的距离 * @returns {{scrollY: (Number|number), scrollX: (Number|number)}} */function scroll(){ return{ scrollY:window.scrollY||document.body.scrollTop||document.documentElement.scrollTop||0, scrollX:window.scrollX||document.body.scrollLeft|

linux oracle 设置随系统自动启动数据库实例和监听

在root账户下修改/etc/oratab 文件: # vi /etc/oratab 找到orcl=/db/app/oracle/product/11.1.0/db_1 :N这一行 改为: orcl=/db/app/oracle/product/11.1.0/db_1 :Y 也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动. 然后,是修改ORACLE自带的启动与关闭脚本,分别是dbstart和dbshut.执行这两个脚本就可以实现ORACLE脚本的启动与关闭. 在oracle账户下

Android 监听系统短信广播

使用场景: 1.对系统接收到的短信进行识别,是广告或者是诈骗等 2.对短信内容进行过滤或者是对内容进行提取,比如验证码提取 3.对系统短信进行拦截,连系统自己都不让收到了(不会出现在系统数据里面,也不会有系统短信的通知栏提示) 备注: 1.系统短信广播为有序广播,要拦截的话,需要在注册广播的时候设置广播优先级为最大,不过这种也有风险,如果被其他的应用先拦截了,那么我们将不再收到,使用时需注意. 2.要接到系统短信广播,那么应用必须具备短信读取权限,这对使用者来说可能是一个限制 3.除了短信读取权

Android监听屏幕解锁和判断屏幕状态

开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事件.但有时候,在后台执行某个操作时,需要主动判断屏幕的状态,比如是否是亮着的,可以使用PowerManager的isScreenOn方法进行判断,比如屏幕是否开启了自动旋转等. 注册监听解锁广播: 1 2 3 4 5 <receiver android:name="com.home.tests

查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. 系统信息结构图参考:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html 1.2000下操作: 系统表目录:大部分以dbo.sys为前缀. 系统视图目录:有20个常用的视图,以INFORMATION_SCHEMA为前缀. 在2