通过 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获取应用列表相关推荐

  1. 动态申请权限---通讯录 及获取通讯录列表

    private static String[] PERMISSIONS_STORAGE = {//动态申请权限列表 // "android.permission.WRITE_CONTACTS ...

  2. 新浪微博客户端开发之授权登录+获取微博列表

    新浪微博客户端开发之授权登录+获取微博列表 闲篇: 最近实在是乱得不行,至于怎么乱我也不知该怎么说,那么久没发博客就证明了这点,一般如果小巫有做详尽的计划,并把时间投入到上面的话,我是可以用最短的时间 ...

  3. 图片管理之获取图片列表数据

    图片管理 在图片表中我们需要对图片数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取图片列表数据 接口分析 请求方式: GET /meiduo_admi ...

  4. ntrip获取源列表_Ntrip通讯协议怎么样?

    1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS ...

  5. R语言list.dirs函数获取目录列表实战

    R语言list.dirs函数获取目录列表实战 目录 R语言list.dirs函数获取目录列表实战 #仿真数据 #获取目录列表

  6. R语言list.files函数获取文件列表实战

    R语言list.files函数获取文件列表实战 目录 R语言list.files函数获取文件列表实战 #仿真数据 #基本语法

  7. TScreen 类 - 获取字体列表

    为什么80%的码农都做不了架构师?>>>    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...

  8. Python-装饰器-案例-获取文件列表

    1 import os 2 3 4 def get_all_path(fun): 5 '''装饰器.功能:获取全路径文件名.如:D:/tmp/12.txt 6 :param fun: 7 :retur ...

  9. php 获取权限,php 获取权限列表函数_PHP教程

    //获取权限列表 public function getPriveList($id){ $sql="SELECT m.id, m.name FROM jh_user AS u, jh_rol ...

  10. C++Eratosthenes埃氏筛法获取素数列表的实现算法(附完整源码)

    C++Eratosthenes埃氏筛法获取素数列表的实现算法 C++Eratosthenes埃氏筛法获取素数列表的实现算法完整源码(定义,实现,main函数测试) C++Eratosthenes埃氏筛 ...

最新文章

  1. Shell 十三问 的学习记录
  2. 【图像分割模型】用BRNN做分割—ReSeg
  3. 关于构造函数和this调用的思考
  4. python中mean的用法_Python statistics mean()用法及代码示例
  5. Vue框架之条件与循环的使用
  6. 在WEB中实现打印分页
  7. 最大独立匹配_新车|升级柴油国六动力,配后排独立座椅,瑞风M5新车型上市...
  8. python最适合做什么-python学完之后比较适合哪些职业工作呢?
  9. VM Workstation 虚拟机安装Ghost XP教程
  10. 【5分钟 Paper】Playing Atari with Deep Reinforcement Learning
  11. 并发编程-Semaphore,CycliBarrier,CountDownlatch类的使用
  12. 电信大数据治理与质量管理
  13. 大数据时代,为什么很多JAVA程序员会转型做JAVA大数据
  14. CC2640R2F之NOTIFY发送子程序
  15. 360推送工具-批量推送360网站工具
  16. 你需要的物流运输类报表,这里都有
  17. SAP中发票冻结原因
  18. C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
  19. 关于生成随机不重复号码的算法迭代过程
  20. 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动

热门文章

  1. 安卓WebView调起本地文件选择
  2. 科学道德与学风-2021雨课堂答案-第4章
  3. java字符串长度_Java字符串长
  4. mac win7 计算机,几步教会你win7更改mac地址_win7电脑改mac地址方法
  5. 蔡学镛:文档模板,天使或恶魔?
  6. 一款可以精准爬取网站的网络数据采集系统
  7. C++-导出类-导出宏-纯虚函数-DllMain函数-调用约定与参数命名
  8. 神经网络模型应用实例SPSS - 典型的神经网络模型 - 神经网络模型的应用
  9. SPSS神经网络心得(一)
  10. 产品分析 | K12在线教育之猿辅导