首先,请注意,这个问题与我在 SO 上找到的所有“android 前台应用程序”问题不同,请继续阅读 :-)
我正在尝试使用 golang 编写一个供我自己使用的 android 应用程序,而不使用 android-sdk 或 ndk(这是关键点)。这很简单,只需使用 golang 编写一个 http 服务,为 arm CPU 编译它,瞧我的应用程序正在运行,只需访问 http://localhost 即可访问。
为了我的应用程序的目的,我需要知道当前正在运行的前台应用程序,以精确定义它:
而且由于我不使用任何 android,只是将手机视为 LINUX 机器,我希望解决方案使用 native 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 权限,您想要实现的任何事情都是不可能的,因为不可能拒绝执行应用程序或在没有 super 用户权限的情况下杀死它。
关于Android:如何获取前台应用程序的进程ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978632/