在Android上如何结束其他应用程序?

16

我试图杀死另一个应用程序。但是这段代码无法杀死我的另一个应用程序。我知道杀死另一个应用程序是一个不好的想法。但是出于学习目的,我已经尝试过了。我的代码部分:

Button runningApp = (Button) findViewById(R.id.runningApp);
runningApp.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        String nameOfProcess = "com.example.filepath";
        ActivityManager  manager = (ActivityManager)ApplicationActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
        {
            if (process.processName.contains(nameOfProcess))
            {
                Log.e("Proccess" , process.processName + " : " + process.pid);
                android.os.Process.killProcess(process.pid);
                android.os.Process.sendSignal(process.pid, android.os.Process.SIGNAL_KILL);
                manager.killBackgroundProcesses(process.processName);
                break;
            }
        }
    }
});

我已经添加了权限,它们是:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />

每次我看到LogCat时,特定应用程序都在后台运行。 我错了吗?

这种事情是一个严重的安全问题,因此受到严格的监管。如果你不拥有你想要终止的应用程序,我认为这是不可能的,但如果你拥有,我认为可以做到。为什么不多提供一些关于你想要做什么的详细信息呢? - Iain_b
最近有人向我推荐了Google Play,其中有一些应用程序是任务管理器。这是否可能?如果可能,请有经验的人解释一下如何实现。我希望能够掌握相关概念。 - Dinesh Lingam
尝试这个:https://dev59.com/8G015IYBdhLWcg3w7wXF#40266343 - bastami82
2个回答

18

只能强制结束与当前进程相同用户名的进程,如果你尝试结束自己的进程,那么应该可以。否则,除非你的设备已经取得了root权限并且你的应用程序也具备root权限,否则你无法结束其他进程。


1
最近我被引荐到了Google Play,这里有一些人发布了一些任务杀手应用程序。这真的可能吗? - Dinesh Lingam
1
任务管理器只会关闭后台任务,无法关闭其他正在运行的应用程序。而且它也不是必需品。Android系统会自动清理不需要的内容。 - David Wasser
David,我同意你的答案。我需要帮助。如何通过编程方式终止后台任务?我需要学习,所以你可以训练我。谢谢。 - Dinesh Lingam
请看这里:https://dev59.com/qmoy5IYBdhLWcg3wCpoz - David Wasser
我已经阅读了很多有关在您自己的应用程序内尝试“停止”另一个第三方应用程序的主题。这似乎是不可能的事情(除非您已经获取了root权限)。另一方面,所有Android版本都允许用户手动停止任何服务或应用程序:设置>应用程序>运行中的应用程序>停止。那么为什么没有编程方法来实现这个功能呢?Android真的是一个开源的程序吗? - nnyerges

3

如果您的设备已经root并且您的应用位于/system/app中,则可以通过禁用和启用方式来杀死另一个应用程序:

pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

这将关闭应用程序并使其再次可访问。请注意,主屏幕快捷方式会消失。


某些应用程序不响应killBackgroundProcesses(...)方法,例如Pandora。但是,我测试的每种情况似乎都可以使用上述方法解决。+1! - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接