PackageManager 和 ActivityManager

AM的重点在于获取运行时的信息,而PM的重点在于获取安装的信息

获取Mainfest下的节点信息。包含了所有Activity Service信息。

利用apActivityManager获取服务信息;

并判断当前服务是否在运行中:

 public static boolean isServiceRunning(Context context,String serviceName){
           boolean isRunning = false;

           //判断运行中的服务状态,ActivityManager
           ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
           //获取android手机中运行的所有服务
           List<ActivityManager.RunningServiceInfo> runningServices = am.getRunningServices(50);

           for (ActivityManager.RunningServiceInfo runningServiceInfo : runningServices) {
               //System.out.println(runningServiceInfo.service.getClassName());
               //判断服务的名字是否包含我们指定的服务名
               if (runningServiceInfo.service.getClassName().equals(serviceName)){
                   //名字相等,该服务在运行中
                   isRunning = true;
                   //已经找到 退出循环
                   break;
               }
           }
           return isRunning;
       }


packageManager:

获取已经安装的PackageInfo(不用指定包名返回一个集合):

        List<PackageInfo> listpackinfos = packageManager.getInstalledPackages(0);

获取通过包名获取一个PackageInfo信息(以指定包名返回的信息):

PackageManager packageManager = getPackageManager();
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
            curryversion=packageInfo.versionCode;
               curryname=packageInfo.packageName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

获取开启应用第一个界面的的意图:

 Intent launchIntentForPackage = pm.getLaunchIntentForPackage(clickapkBean.getPackgename());

注意有可能为空。有的应用没有主界面!

(ApplicationInfo 是PackageInfo的下一层注意层级关系 ,先有包信息,通过包信息获取到应用信息)

通过PackageInfo获取ApplicationInfo从而获取下面的图片和应用名信息:

            apkBean.setApkname(packinfo.applicationInfo.loadLabel(packageManager) + "");
            apkBean.setApkpicture(packinfo.applicationInfo.loadIcon(packageManager));
            apkBean.setPackgename(packinfo.packageName);
            String dir = packinfo.applicationInfo.sourceDir;
            File file = new File(dir);
            apkBean.setApKsize(file.length());
            int flags = packinfo.applicationInfo.flags;
            if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0) {

                apkBean.setApkflag(true);
            } else {
                apkBean.setApkflag(false);
            }
            list.add(apkBean);


通过Environment类获取 储存卡目录和系统内部目录:

 File externalStorageDirectory = Environment.getExternalStorageDirectory(); //返回的是一个大文件夹 可以变成字符串就是路径了!
        sdmaxSpace = externalStorageDirectory.getTotalSpace();


获取系统内部目录(可以对文件进行操作):

    File dataDirectory=Environment.getDataDirectory();
        dataDirectory.getTotalSpace();//总空间



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值