gpt4 book ai didi

android - 如何在 API 22 中获取正在运行的应用程序列表

转载 作者:行者123 更新时间:2023-11-29 01:28:16 24 4
gpt4 key购买 nike

ActivityManager.getRunningAppProcesses 将仅返回当前应用程序,因为 5.1.1:构建 LMY48L。应用程序需要具有 REAL_GET_TASK 权限才能访问所有应用程序的进程信息。REAL_GET_TASK 仅在 SYSTEM 应用程序中使用。GET_TASK 权限已被弃用。

有人告诉我使用 UsageStatsManager,但是 PACKAGE_USAGE_STATS 权限需要 API 23(在 https://developer.android.com/reference/android/Manifest.permission.html 中说)

UsageStatsManager 是获取正在运行的应用程序的一种奇怪方式,是否有返回正在运行的应用程序列表的通用方法?

最佳答案

我到处搜索,发现只有一个网站对我有帮助:

Java Code Examples for android.app.usage.UsageStatsManager

要获取有关 UsageStatsManager 的更多信息,请阅读:

UsageStatsManager

以下是在 API 22 及更高版本中获取正在运行的应用程序包名称的方法:

private String getProcessName() {
String foregroundProcess = "";
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
// Process running
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
// We get usage stats for the last 10 seconds
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time);
// Sort the stats by the last time used
if(stats != null) {
SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(),usageStats);
Log.d("RunningAppProcessInfo","Package name : "+usageStats.getPackageName());
}

}
}
}

在日志中,您将能够看到正在运行的应用程序的包名称...希望对您有所帮助:)

关于android - 如何在 API 22 中获取正在运行的应用程序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32648441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com