我正在使用此代码停止Android手机中选定的正在运行的应用程序:
Button view = (Button)findViewById(R.id.button1);
view.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
String appname = getIntent().getExtras().getString("appname");
String pname=appname.split("\n")[3];
int id=Integer.parseInt(pname);
finish();
android.os.Process.killProcess(id);
Id是正确的,但此代码无效......任何帮助? 有没有其他代码可以通过使用他们的id来杀死进程?
答案 0 :(得分:2)
如果您查看Android API for Kill Process,则说明以下内容:
使用给定的PID终止进程。请注意,尽管此API允许我们根据其PID请求终止任何进程,但内核仍将对您实际可以杀死的PID施加标准限制。通常,这意味着只有运行调用者的包/应用程序的进程以及该应用程序创建的任何其他进程;共享一个共同UID的软件包也可以杀死彼此的进程。
这意味着除了您的应用包所在的应用之外,您无法杀死其他应用。
这个答案解释了为什么会这样以及如何运作:https://stackoverflow.com/a/7560009/1306012
答案 1 :(得分:1)
您需要要杀死的应用程序的包名称(例如com.facebook.katana),然后调用
ActivityManager.killBackgroundProcesses(packageName);
//for example: kill the facebook app
//ActivityManager.killBackgroundProcesses("com.facebook.katana);
但是,您需要在清单中定义权限KILL_BACKGROUND_PROCESSES
。
答案 2 :(得分:0)
你可以使用
ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> services = manager.getRunningAppProcesses();
String service1name = service[1].processName;
您可以获取所有正在运行的进程的程序包名称,检查要杀死的程序包,然后选择
process get process id by service.pid.
并致电
android.os.Process.killProcess(service.pid);