Java Android关闭其他应用程序

Java Android关闭其他应用程序,java,android,Java,Android,我有一些代码可以使用intent启动不同的应用程序,但是我可以做些什么来关闭或杀死另一个应用程序呢 以下是发布代码(非常有用): 我试图终止后台进程,但没有成功: ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); activityManager.killBackgroundProcesses("com.pandora.android")

我有一些代码可以使用intent启动不同的应用程序,但是我可以做些什么来关闭或杀死另一个应用程序呢

以下是发布代码(非常有用):

我试图终止后台进程,但没有成功:

ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
  activityManager.killBackgroundProcesses("com.pandora.android");
我也试着用这个来杀死它:

context.stopService(new Intent(context, Class.forName("com.bla.bla")));
更新:
我想终止其他应用程序,因为我启动了其他应用程序,并且用户请求了此附加功能(auto kill是auto launch的自然扩展)。请回答如何在代码中实现这一点的问题。我知道高级任务管理器,所以它是可能的,但如何

但是我能做些什么来关闭或杀死另一个应用程序呢


你没有。您的用户可以在需要时退出该“其他应用程序”。

您可以使用Process.killProcess()?你需要知道PID。要获得PID,您可以执行“ps”,但这并不可靠,因为不同设备或版本的文本输出格式可能不同。您可以提供自己的本机库,以将进程名称和ID收集为标准格式,以供自己使用。

基本答案,您不能。从Froyo开始,唯一可用的工具是ActivityManager.killBackgroundProcess(),它:

(a) 它只允许您终止在后台且用户不可见的进程。也就是说,它不允许您中断其他应用程序的正常执行

(b) 无论如何都不需要,因为如果Android需要后台进程的内存,它会为您终止后台进程


你根本不需要做你在这一点上似乎认为你做的事情。“因为我的用户要求这样做”并不是杀掉别人进程的理由。

我最终找到了这个问题的真正答案。请查看解决方案

杀死另一个“应用程序”的唯一正确方法是向该应用程序(例如潘多拉)或其服务发送某种意图,请求其退出

任务杀手使用Android正常手段之外的工具,如与Linux内核而非Android对话的
Process.killProcess()
。这种方法的问题在于它没有告诉Android关闭程序,而是直接告诉Linux内核。例如,如果后台服务被终止,而没有调用
Context.stopService()
,Android可能会在以后自动重新启动它。此外,killProcess不仅仅关闭活动,它还杀死所有组件,不允许它们正常关闭


如果你用Activity.startActivityForResult()启动潘多拉,你可以尝试用Activity.finishActivity()关闭它,但不能保证它能按你想要的方式工作。

Android不像计算机那样工作,但这里仍然有合法的理由终止进程。这就是任务杀手存在的全部原因。你想完成什么?可能有一种比杀掉其他应用程序更为用户友好的方法。出于好奇,你为什么要杀掉其他应用程序?可能与我想杀掉其他应用程序的方法重复,因为我启动了其他应用程序,并且用户请求了此附加功能。请回答如何在代码中实现这一点的问题。我知道Advanced Task Mgr,所以它是可能的,但是如何实现呢?这是一个非常好的主意,但它并没有很好地完成工作。我可以使用ActivityManager获取正在运行的进程的列表,但当我使用Process.killProcess(pid)时,它什么也不做。在阅读文档时,它说你只能杀死自己的进程。谢谢你真的试图解决这个问题!我已经在手机上安装了Froyo和应用程序任务杀手。任务杀手实际上有能力杀死其他应用程序和进程。这意味着你所说的不是真的。我编写了一个应用程序来在某些系统事件发生时启动其他应用程序。例如,如果您插入耳机,您可以使用我编写的应用程序配置Pandora自动启动。用户希望我的应用程序在拔下耳机后立即杀死潘多拉(或任何已配置的应用程序)。当然,用户可以自己做这件事,但这违背了这个方便的自动启动/终止应用程序的目的。但我想让我的手机自动关闭应用程序。为什么我不能自动执行此操作?
context.stopService(new Intent(context, Class.forName("com.bla.bla")));