Android:杀死(所有)前台运行的应用程序

发布于 2024-11-24 23:06:30 字数 353 浏览 1 评论 0原文

我正在寻找一种方法来从Linux内核(使用它的进程ID)杀死前台Dalvik应用程序(主动运行)?

我怎样才能实现这个目标?有什么想法吗?内核是否能看到正在运行的应用程序的 pid?

例如,怎么样? Android中的进程管理器/任务管理器实现了这一点吗?

有线索吗?

已编辑:

我正在研究的问题是一种杀死“行为与预期不同”的应用程序的方法。

这种“不同的行为”总是固定的。可以将其想象为向特定端口发送消息。

如何通过留在应用程序之外并仍然拥有杀死它的权限来杀死该应用程序?这就是为什么我想知道如果这个模块不位于内核中,是否必须将其放在框架上。

I am looking for a way to kill the foreground Dalvik App(actively running) from the linux kernel(using it's process ID)?

How can I achieve this? any ideas? Does the kernel see the pid of a running App?

How does for eg. process Manager/Task manager in Android achieve this?

Any leads?

Edited:

The problem I'm looking at is a way to kill an App that "behaves differently than intended".

This "different behaviour" is always fixed. Think of it like sending a message to a particular port.

How can I kill an App by staying outside of it and still having permissions to kill it? That is why I was wondering if I have to make this module sit on the framework if not right in the kernel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪 2024-12-01 23:06:30

这将获取所有正在运行的进程并杀死具有指定 pid 的进程:

ArrayList<Integer> pids = new ArrayList<Integer>();
ActivityManager  manager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
{
    if (pids.contains(process.pid))
    {
        // Ends the app
        manager.restartPackage(process.processName);
    }
}

您将需要这些权限才能执行此操作:

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>

This will get all running processes and kill those with the specified pid:

ArrayList<Integer> pids = new ArrayList<Integer>();
ActivityManager  manager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
{
    if (pids.contains(process.pid))
    {
        // Ends the app
        manager.restartPackage(process.processName);
    }
}

You will need these permissions to do this:

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文