【问题标题】:Kill another application on Android?杀死 Android 上的另一个应用程序?
【发布时间】:2012-08-20 11:34:30
【问题描述】:

我试图杀死我的另一个应用程序。但是这段代码无法杀死我的另一个应用程序。我知道杀死另一个应用程序是一个坏主意。但是我有一个学习的目的,我已经尝试过杀人。我的代码部分:

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 时,特定的应用程序都在后台运行。我哪里看错了?

【问题讨论】:

  • 这种事情是一个严重的安全问题,因此受到严格监管。如果您不拥有您要杀死的应用程序,我认为这是不可能的,但如果您这样做,我认为可以完成。您为什么不详细说明您正在尝试做的事情?
  • 最近我被提到了Google Play,这里有些推出的应用是Task Killer。可能吗?如果可能,请任何人解释它是如何可能的。我需要学习概念。

标签: android


【解决方案1】:

您只能终止与执行终止的进程具有相同用户 ID 的进程。如果您试图杀死自己的进程,它应该可以工作。否则你不能这样做(除非你有一个 root 设备并且你的应用程序有 root 权限)。

【讨论】:

  • 最近我被推荐Google Play,这里有些启动的应用程序是Task Killer。有可能吗?
  • Task Killer 只是杀死后台任务。它不能杀死其他正在运行的应用程序。而且没有必要。 Android 会杀死自己不需要的东西。
  • 大卫我同意你的回答。我需要一个帮助。如何以编程方式杀死后台任务。我需要学习,所以你可以训练我。谢谢。
  • 我已经阅读了很多关于尝试在您自己的应用程序中“停止”另一个 3rd 方应用程序的主题。它看起来像是不可能的事情(除非你已经扎根)。另一方面,所有安卓版本都允许用户手动停止任何服务或应用程序:设置>应用程序>运行应用程序>停止。那么为什么没有程序化的方式呢? Android 真的是开源程序吗?
【解决方案2】:

如果您的设备已植根并且您的应用位于 /system/app 中,那么您可以通过以下方式禁用和启用另一个应用:

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

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

【讨论】:

  • 某些应用程序不响应 killBackgroundProcesses(...) 方法,例如 Pandora。上述方法似乎确实适用于我测试的几乎所有案例。 +1!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多