Android 如何删除后台运行的应用程序?
我有一个应用程序,它列出了所有已安装的应用程序,并在单击项目时启动它们。现在我更新了它,阻止了一些应用程序,如设置,android market place等。为此,我使用了一个仅在退出应用程序时停止的服务。该服务持续检查当前正在运行的应用程序。如果是被阻止的应用程序,则显示类似这样的新活动Android 如何删除后台运行的应用程序?,android,background,Android,Background,我有一个应用程序,它列出了所有已安装的应用程序,并在单击项目时启动它们。现在我更新了它,阻止了一些应用程序,如设置,android market place等。为此,我使用了一个仅在退出应用程序时停止的服务。该服务持续检查当前正在运行的应用程序。如果是被阻止的应用程序,则显示类似这样的新活动 private void currentlyRunningApps() { List<RunningTaskInfo> runningTasks = ((ActivityManager)
private void currentlyRunningApps() {
List<RunningTaskInfo> runningTasks = ((ActivityManager) getApplicationContext() .getSystemService("activity")).getRunningTasks(1);
if (runningTasks != null && !runningTasks.isEmpty()) {
for (int i = 0; i < runningTasks.size(); i++) {
RunningTaskInfo runningtaskinfo = (RunningTaskInfo) runningTasks .get(i);
String packageName = runningtaskinfo.topActivity.getPackageName();
if(checkBlackListedTask(runningtaskinfo)) {
handler.post(new Runnable() {
@Override
public void run() {
// show action not allowed activity
}
});
break;
}
}
}
}
这会引发空指针异常
在显示“不允许操作”活动之前,如何关闭这些被阻止的应用程序
有没有办法解决这个问题
提前感谢ActivityManager.killBackgroundProcess()允许您终止位于后台且用户不可见的进程。这是为了防止您中断其他应用程序的执行
只有系统应用程序(位于/system/app中的应用程序)可以强制停止其他应用程序。基本上,我们需要android.permission.FORCE\u STOP\u PACKAGES权限。但是,它受到平台签名的保护。这就是为什么三星有一个TaskManager可以杀死应用程序,而我们开发者却不能。查看更多信息是否检查我提到的链接。是的,我已添加到清单中。当我尝试打印此异常时,您能否发布日志?仅显示空。invoke(activityManager,包名)引发此异常。
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am,package name);