在非 root Android 上获取 运行 个应用程序
Get Running Applications on a non rooted Android
我看过很多关于如何在 Android 上获取 运行 进程的 post,但是随着 Lolipop 的出现,情况发生了变化。现在该列表已针对非根设备进行中继。
每个post都要做这样的代码:
ActivityManager am = (ActivityManager) mContext
.getSystemService(Activity.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = this.getActivityManager().getRunningAppProcesses();
List<ActivityManager.RunningTaskInfo> taskInfo = this.getActivityManager().getRunningTasks(Integer.MAX_VALUE);
我试过了,唯一检索到的是你当前的申请。
@Stan 正在谈论开发一个 accessibility service here in this post: How to check current running applications in Android?
我检查了 API,我看到的是您可以通过无障碍服务获悉应用程序启动,但如果之后仍然 运行 则不会。所以我认为这不是一个好方法。
有人知道怎么做吗?
在 Android Lolipop 中,您的代码将无法工作,因为从 Android L 开始,getRunningTask 将无法工作。您必须使用 getAppRunningProcess。
代码如下:-
public static String[] getActivePackagesCompat() {
final List<ActivityManager.RunningTaskInfo> taskInfo = mActivityManager.getRunningTasks(1);
final ComponentName componentName = taskInfo.get(0).topActivity;
final String[] activePackages = new String[1];
activePackages[0] = componentName.getPackageName();
return activePackages;
}
public static String[] getActivePackages() {
final Set<String> activePackages = new HashSet<String>();
final List<ActivityManager.RunningAppProcessInfo> processInfos = mActivityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
activePackages.addAll(Arrays.asList(processInfo.pkgList));
}
}
return activePackages.toArray(new String[activePackages.size()]);
}
我看过很多关于如何在 Android 上获取 运行 进程的 post,但是随着 Lolipop 的出现,情况发生了变化。现在该列表已针对非根设备进行中继。
每个post都要做这样的代码:
ActivityManager am = (ActivityManager) mContext
.getSystemService(Activity.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = this.getActivityManager().getRunningAppProcesses();
List<ActivityManager.RunningTaskInfo> taskInfo = this.getActivityManager().getRunningTasks(Integer.MAX_VALUE);
我试过了,唯一检索到的是你当前的申请。
@Stan 正在谈论开发一个 accessibility service here in this post: How to check current running applications in Android?
我检查了 API,我看到的是您可以通过无障碍服务获悉应用程序启动,但如果之后仍然 运行 则不会。所以我认为这不是一个好方法。
有人知道怎么做吗?
在 Android Lolipop 中,您的代码将无法工作,因为从 Android L 开始,getRunningTask 将无法工作。您必须使用 getAppRunningProcess。
代码如下:-
public static String[] getActivePackagesCompat() {
final List<ActivityManager.RunningTaskInfo> taskInfo = mActivityManager.getRunningTasks(1);
final ComponentName componentName = taskInfo.get(0).topActivity;
final String[] activePackages = new String[1];
activePackages[0] = componentName.getPackageName();
return activePackages;
}
public static String[] getActivePackages() {
final Set<String> activePackages = new HashSet<String>();
final List<ActivityManager.RunningAppProcessInfo> processInfos = mActivityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
activePackages.addAll(Arrays.asList(processInfo.pkgList));
}
}
return activePackages.toArray(new String[activePackages.size()]);
}