PackageManager获取应用列表
通过 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
PackageManager获取应用列表相关推荐
- 动态申请权限---通讯录 及获取通讯录列表
private static String[] PERMISSIONS_STORAGE = {//动态申请权限列表 // "android.permission.WRITE_CONTACTS ...
- 新浪微博客户端开发之授权登录+获取微博列表
新浪微博客户端开发之授权登录+获取微博列表 闲篇: 最近实在是乱得不行,至于怎么乱我也不知该怎么说,那么久没发博客就证明了这点,一般如果小巫有做详尽的计划,并把时间投入到上面的话,我是可以用最短的时间 ...
- 图片管理之获取图片列表数据
图片管理 在图片表中我们需要对图片数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取图片列表数据 接口分析 请求方式: GET /meiduo_admi ...
- ntrip获取源列表_Ntrip通讯协议怎么样?
1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS ...
- R语言list.dirs函数获取目录列表实战
R语言list.dirs函数获取目录列表实战 目录 R语言list.dirs函数获取目录列表实战 #仿真数据 #获取目录列表
- R语言list.files函数获取文件列表实战
R语言list.files函数获取文件列表实战 目录 R语言list.files函数获取文件列表实战 #仿真数据 #基本语法
- TScreen 类 - 获取字体列表
为什么80%的码农都做不了架构师?>>> unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...
- Python-装饰器-案例-获取文件列表
1 import os 2 3 4 def get_all_path(fun): 5 '''装饰器.功能:获取全路径文件名.如:D:/tmp/12.txt 6 :param fun: 7 :retur ...
- php 获取权限,php 获取权限列表函数_PHP教程
//获取权限列表 public function getPriveList($id){ $sql="SELECT m.id, m.name FROM jh_user AS u, jh_rol ...
- C++Eratosthenes埃氏筛法获取素数列表的实现算法(附完整源码)
C++Eratosthenes埃氏筛法获取素数列表的实现算法 C++Eratosthenes埃氏筛法获取素数列表的实现算法完整源码(定义,实现,main函数测试) C++Eratosthenes埃氏筛 ...
最新文章
- Shell 十三问 的学习记录
- 【图像分割模型】用BRNN做分割—ReSeg
- 关于构造函数和this调用的思考
- python中mean的用法_Python statistics mean()用法及代码示例
- Vue框架之条件与循环的使用
- 在WEB中实现打印分页
- 最大独立匹配_新车|升级柴油国六动力,配后排独立座椅,瑞风M5新车型上市...
- python最适合做什么-python学完之后比较适合哪些职业工作呢?
- VM Workstation 虚拟机安装Ghost XP教程
- 【5分钟 Paper】Playing Atari with Deep Reinforcement Learning
- 并发编程-Semaphore,CycliBarrier,CountDownlatch类的使用
- 电信大数据治理与质量管理
- 大数据时代,为什么很多JAVA程序员会转型做JAVA大数据
- CC2640R2F之NOTIFY发送子程序
- 360推送工具-批量推送360网站工具
- 你需要的物流运输类报表,这里都有
- SAP中发票冻结原因
- C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
- 关于生成随机不重复号码的算法迭代过程
- 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动