微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我的目标很简单。我正在开发一个应用程序杀手(Hibernate)。 我想和“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;
}

但它只显示我的应用。

解决方法

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

enter image description here enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。