使用PackageManager来获取应用信息

PackageManager可以获取到一个APP的各项信息,如包名、版本号、图标等信息。

获取PackageManager对象的方法很简单:

PackageManager packageManager = context.getPackageManager();

一般有两种应用场景:获取指定/自身的APP信息、获取所有APP信息


获取自身的APP信息

获取指定APP的信息,需要该APP的包名,而获取自身的信息,可以使用context.getPackageName()来获取自己的包名

更新应用时,需要APP的版本号,和最新版本对比,来判断是否需要更新

    /**获取本应用的版本信息*/
    public static int getAppMsg(Context context) {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo = null;
        try {
            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
            //版本名
            String versionName = packageInfo.versionName;
            //版本号
            int versionCode = packageInfo.versionCode;
            return versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return -1;
    }

获取所有APP信息

获取所有APP的信息,PackageManager直接调用getInstalledApplications(int flags)方法即可

    /**获取所有APP信息*/
    public static ArrayList<AppMsgBean> getAllAppMsg(Context context) {
        ArrayList<AppMsgBean> beans = new ArrayList<>();
        PackageManager packageManager = context.getPackageManager();
        List<ApplicationInfo> applications = packageManager.getInstalledApplications(0);
        for(ApplicationInfo app : applications){
            //获取应用的包名
            String name = app.packageName;
            //判断是否是系统应用
            boolean isSystemApp = (app.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
            //获取应用图标,加载时会比较卡,建议在IO线程执行
            Drawable icon = app.loadIcon(packageManager);
            //每个APP用一个JAVA Bean封装
            AppMsgBean bean = new AppMsgBean(name, icon,isSystemApp);
            beans.add(bean);
        }
        return beans;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值