繁体   English   中英

Android:如何获取前台应用的进程ID

[英]Android: How to get the process id of the foreground app

首先,请注意,这个问题是不是同所有的“机器人应用前景”的问题,我就发现SO,请阅读:-)

我正在尝试使用 golang 编写一个供我自己使用的 android 应用程序,而不使用 android-sdk 或 ndk(这是关键点)。 这很简单,只需使用golang编写一个http服务,为arm CPU编译它,瞧我的应用程序正在运行,只需访问http://localhost即可访问。

出于我的应用程序的目的,我需要知道当前正在运行的前台应用程序,以精确定义它:

  1. 前台应用程序是占据屏幕的应用程序,或具有“活动”的应用程序(请原谅我不是 android 开发人员)。

  2. 前台应用程序(例如服务)所依赖的任何东西都不是我感兴趣的。

  3. 如果手机已锁定/屏幕关闭,我希望解决方案告诉我没有前台应用程序。

而且由于我不使用任何 android,只是将手机视为 LINUX 机器,我希望该解决方案使用本机 LINUX 方式,例如通过检查 /proc,或调用任何已安装的 android 命令行工具(包括通过这些命令发送消息)线工具),但使用任何 SDK/NDK 方式,因此我必须使用 java 或将这些东西合并到我的应用程序中。

从 Android SDK 26 开始(如果我没记错的话)应用程序在 -one-User-per-App 上执行,因此(即)WhatsApp 在 UID=30 上运行,Telegram 在 UID=76 上运行,因此执行“ps”的 ROOT 命令-A -o PID,USER,NAME" 您可以解析输出,然后杀死您不想执行的所有进程。

36119 u30_a149     <WhatsApp_packagename>
36203 u76_a211     <Telegram_packagename>
37399 root         [kworker/1:2H]
37423 u0_a329      su
38069 root         sh

没有 Root 权限,您尝试实现的任何目标都不可能仅仅因为不可能拒绝执行应用程序或在没有超级用户权限的情况下将其杀死。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM