android版本5.1是什么意思,Android 5.1.1及更高版本 - getRunningAppProcesses()

private String printForegroundTask() {

String currentApp = "NULL";

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {

UsageStatsManager usm = (UsageStatsManager)this.getSystemService("usagestats");

long time = System.currentTimeMillis();

List appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,  time - 1000*1000, time);

if (appList != null && appList.size() > 0) {

SortedMap mySortedMap = new TreeMap();

for (UsageStats usageStats : appList) {

mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);

}

if (mySortedMap != null && !mySortedMap.isEmpty()) {

currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();

}

}

} else {

ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);

List tasks = am.getRunningAppProcesses();

currentApp = tasks.get(0).processName;

}

Log.e("adapter", "Current App in foreground is: " + currentApp);

return currentApp;}

使用此方法获取前台任务。你需要一个系统权限“android:get_usage_stats”public static boolean needPermissionForBlocking(Context context){

try {

PackageManager packageManager = context.getPackageManager();

ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);

AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);

int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName);

return  (mode != AppOpsManager.MODE_ALLOWED);

} catch (PackageManager.NameNotFoundException e) {

return true;

}}

IF用户在设置 - >安全 - >应用程序中启用此功能并具有使用权限。之后你将获得前台任务。类似的过程通过Cheetahamobile 谷歌播放链接清洁matser

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值