我想以编程方式停止某个应用。我读过这应该是调用moveTaskToBack()
,但我无法想象如何根据像#34; com.adobe.reader"这样的包名来调用它。 。我可以在任务堆栈中找到他持久的任务ID搜索,但我现在不知道该怎么做。
public static void stopPackageProcess(String packageName, Context context) {
Context mContext = context;
final ActivityManager am = (ActivityManager) mContext
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> mTasks =
am.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
for (int i = 0; i < mTasks.size(); i++)
{
String name = mTasks.get(i).baseIntent
.getComponent().getPackageName();
if(name.equals(packageName)) {
// TODO: Stop App
break;
}
}
}
答案 0 :(得分:3)
如果你做对了,你想在后台停止一个应用程序。
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.killBackgroundProcesses(PACKAGENAME);
这样做。例如 这需要android.permission.KILL_BACKGROUND_PROCESSES权限
答案 1 :(得分:0)
您无法杀死Android中的任何进程。 From the documentation on Process:
请注意,尽管此API允许我们根据其PID请求终止任何进程,但内核仍会对您实际可以杀死的PID施加标准限制。通常,这意味着只有运行调用者程序包/应用程序的进程以及该应用程序创建的任何其他进程;共享一个共同UID的软件包也可以杀死彼此的进程。
另请注意,您在清单中请求的权限并不像您认为的那样有效。根据{{3}},KILL_BACKGROUND_PROCESS:
允许应用程序调用killBackgroundProcesses(String)。