Android:如何检查应用程序是否正在运行

我需要通过 packageName 检查 - 是否正在运行应用程序。在 v.21 之前,我只是得到正在运行的应用程序的列表并跳舞。但现在它不起作用 - 只返回一个我的应用程序。我知道我需要使用“统计使用”,但找不到完整的例子。


我不需要所有这些分析,我需要一个简单的功能


bool isRunning(String packageName)

如何在没有围绕它跳舞的情况下在新的 Android (>21) 上实现它?


更新。code4rox的答案最好。一切正常,谢谢!

我使用此代码检查权限:


import android.content.pm.PackageManager;

import android.content.pm.ApplicationInfo;

import android.app.AppOpsManager;

import android.util.Log;

import  android.provider.Settings;


try {

            PackageManager packageManager = getContext().getPackageManager();

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

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

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

            if (!(mode == AppOpsManager.MODE_ALLOWED)) {

                Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);

                startActivity(intent);

            }

        } catch (PackageManager.NameNotFoundException e) {}

这用于检查应用程序:


import android.util.Log;

import android.app.usage.UsageStatsManager;

import android.app.usage.UsageStats;

import java.util.List;

import java.util.SortedMap;

import java.util.TreeMap;

import java.util.ArrayList;



汪汪一只猫
浏览 299回答 2
2回答

扬帆大鱼

出于安全原因,没有任何方法可以让所有正在运行的应用程序处于 API 级别 (>21)。但您可以使用时间间隔访问应用程序使用历史记录和统计信息:天、周、月和年UsageStatsManager这是官方文档链接clean master、ccleaner等其他应用程序使用此技术来运行应用程序。这是获取应用程序列表的示例UsageStatsManager注意:您必须 在使用前授予使用访问权限UsageStatsManager

天涯尽头无女友

您可以访问此文档。向下滚动到方法部分。其中一些方法需要许可,而其中一些仅用于调试。希望有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java