Android学习——软件管理器之一

PackageInfo、ApplicationInfo、ActivityInfo:
这里写图片描述

PackageManager manager = this.getPackageManager();
//获取所有的包信息(包括安装未使用着的,和未卸载干净的)
List<PackageInfo> packageInfos = manager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
        | PackageManager.GET_ACTIVITIES);
for (PackageInfo pinfo : packageInfos) {
    // System.out.println(pinfo.packageName+"  " + pinfo.versionCode+"   "+pinfo.versionName);
    //获取应用名称
    String name = (String) pinfo.applicationInfo.loadLabel(manager);
    System.out.println("name = " + name);
    if ("拨号".equals(name)) {
        //获取应用图标
        Drawable drawable = pinfo.applicationInfo.loadIcon(manager);
        imgv.setImageDrawable(drawable);
        //获取ActivityInfo数组
        ActivityInfo[] activityInfos = pinfo.activities;
        //首先进行非空判断
        // 获得启动ActivityInfo
        if (activityInfos != null && activityInfos.length > 0) {
            ActivityInfo start = activityInfos[0];
         // 获得启动拨号程序
            Intent intent = new Intent();
            intent.setClassName(pinfo.packageName, start.name);
            startActivity(intent);
        }

    }
}

系统应用包名,版本号,版本名:
这里写图片描述
应用名称:
这里写图片描述
区分系统应用和用户应用:

        PackageManager manager = this.getPackageManager();
        //获取所有的包信息(包括安装未使用着的,和未卸载干净的)
        List<PackageInfo> packageInfos = manager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
                | PackageManager.GET_ACTIVITIES);
        for (PackageInfo pinfo : packageInfos) {
            // System.out.println(pinfo.packageName+"  " + pinfo.versionCode+"   "+pinfo.versionName);
            //获取系统应用
            if (((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)) != 0) {
                System.out.println(pinfo.applicationInfo.loadLabel(manager));
            }else
            //升级过的系统应用
            if ((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
                System.out.println(pinfo.applicationInfo.loadLabel(manager));
            }else{
                if (((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)) == 0) {
                    Log.e("test", (String) pinfo.applicationInfo.loadLabel(manager));
                }
            }
        }

    }

系统应用:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值