我有一个应用程序,它列出了所有已安装的应用程序并在项目单击时启动它们。现在我通过阻止一些应用程序(如设置、android 市场等)对其进行了更新...为此,我使用了一个仅在退出我的应用程序时才停止的服务。这个服务不断检查当前正在运行的应用程序。如果它是一个被阻止的应用程序,则显示一个像这样的新活动。
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;
}
}
}
}
这很好用。但是当从我的应用程序退出时,被阻止的应用程序停留在后台。我尝试了方法killBackgroundProcesses
。restartPackage
但它们不起作用。
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am,package name);
这会引发空指针异常
如何在显示'action not allowed'
活动之前关闭这些被阻止的应用程序?
有没有办法解决这个问题?
提前致谢