Android Java 获取所有后台 运行 应用程序或服务
Android Java Get All Backround Running Apps Or Services
我的目标很简单。我正在开发一个应用程序杀手(休眠器)。
我想和“Hibernator.apk”一样,它的包名称是“com.tafayor.hibernator”。
它的作用是迭代所有后台应用程序或服务。然后它一个一个地休眠所有。
它还会在每天询问一次辅助功能权限。
我的要求如下。
获取所有后台 运行 应用程序或服务。(不是我的应用程序)。
或者一个函数,用于检测 运行 在后台的应用程序(不是我的应用程序,也不是最近的应用程序)。
按包名完全挂起(休眠)应用程序。
我试过了
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 代替 ActivityManager
或 AndroidProcesses.getRunningAppProcesses()
。在您的清单文件中添加 <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
。
同时授予对您的应用程序的使用访问权限。希望这个答案能给你一个线索,使用你想要的逻辑。
我的目标很简单。我正在开发一个应用程序杀手(休眠器)。 我想和“Hibernator.apk”一样,它的包名称是“com.tafayor.hibernator”。 它的作用是迭代所有后台应用程序或服务。然后它一个一个地休眠所有。 它还会在每天询问一次辅助功能权限。
我的要求如下。
获取所有后台 运行 应用程序或服务。(不是我的应用程序)。
或者一个函数,用于检测 运行 在后台的应用程序(不是我的应用程序,也不是最近的应用程序)。
按包名完全挂起(休眠)应用程序。
我试过了
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 代替 ActivityManager
或 AndroidProcesses.getRunningAppProcesses()
。在您的清单文件中添加 <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
。
同时授予对您的应用程序的使用访问权限。希望这个答案能给你一个线索,使用你想要的逻辑。