Android Java 获取所有后台运行的应用程序或服务

问题描述 投票:0回答:2

我的目标很简单。我正在开发一个应用程序杀手(Hibernator)。 我想要制作与“Hibernator.apk”相同的包,它的包名称是“com.tafayor.hibernator”。 它的作用是迭代所有后台应用程序或服务。然后它会一一休眠。 它还每天询问一次辅助权限。

我的要求如下。

  1. 获取所有后台运行的应用程序或服务。(不是我的应用程序)。

  2. 或者通过包名称检测在后台运行的应用程序(不是我的应用程序,也不是最近的应用程序)的函数。

  3. 通过包名称完全暂停(休眠)应用程序。

我已经尝试过。

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

for (int i = 0; i < runningAppProcessInfo.size(); i++) {
  if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for")) {
    // Do your stuff here.
  }
}

还有

public static boolean isForeground(Context ctx, String myPackage){
    ActivityManager manager = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
    List< ActivityManager.RunningTaskInfo > runningTaskInfo = manager.getRunningTasks(1); 

    ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
    if(componentInfo.getPackageName().equals(myPackage)) {
        return true;
    }       
    return false;
}

但它只显示我的应用程序。

java android hibernate kill-process taskkill
2个回答
1
投票

使用 UsageStatsManager 代替

ActivityManager
AndroidProcesses.getRunningAppProcesses()
。在清单文件中添加
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
。 还授予您的应用程序使用访问权限。希望这个答案能给您带来线索,使用您想要的逻辑。

enter image description here enter image description here


0
投票

您找到解决方案了吗?我尝试使用UsageStatsManager但无济于事,而且使用ActivityManager.killBackgroundProcessses和android.os.Process.killProcess杀死其他应用程序在android 14中不起作用。有没有办法查看其他正在运行的应用程序并在android 14中杀死它们?

© www.soinside.com 2019 - 2024. All rights reserved.