一个Android(N) 7.0以上获取后台正在执行的应用的方案.

一.背景

   此文适合穷尽所有方式都不得,绞尽脑汁无法获取Android 所有后台应用的开发者.

  众所周知,Android 系统从5.1以后通过getRunningTask,或者getRunningService的方式已经无法获得应用进程了(只能获得自己的进程),之后出现了以AndroidProcess库为首的一种通过读取/proc/ 进程信息的库,但是从android 7.0开始,系统已经不支持读取/proc/,作为我们开发者来讲,真的是做各种斗争与Google战斗到底啊.

   之后我又尝试通过 

Runtime.getRuntime().exec("ps -A")

这种方式拿,发现好多手机也是拿不到的.这可真是让人胸闷.

  经过不懈的努力,发现了一个一定程度上可以解决此问题的方法.

  另:如果想获取顶层应用包名的同志请搜索UsageStateManager的使用,此处是想获得所有应用的包名.

解决方案:

  话不多说,见代码:

 public void getRunningApp(){
        PackageManager localPackageManager = getPackageManager();
        List localList = localPackageManager.getInstalledPackages(0);
        for (int i = 0; i < localList.size(); i++) {
            PackageInfo localPackageInfo1 = (PackageInfo) localList.get(i);
            String str1 = localPackageInfo1.packageName.split(":")[0];
            if (((ApplicationInfo.FLAG_SYSTEM & localPackageInfo1.applicationInfo.flags) == 0) && ((ApplicationInfo.FLAG_UPDATED_SYSTEM_APP & localPackageInfo1.applicationInfo.flags) == 0) && ((ApplicationInfo.FLAG_STOPPED & localPackageInfo1.applicationInfo.flags) == 0)) {
                Log.e(TAG,str1);
            }
        }

    }

就这短短的几行代码,本人简直翻山越岭,没想到,就这几行代码,愣是Goole也搜不到,百度也查不着...现在人们就是各种搬,搬来搬去都是一些过时的方法,自己也不去深究,导致浪费了很多时间.

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值