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

标签 android go

首先,请注意,这个问题与我在 SO 上找到的所有“android 前台应用程序”问题不同,请继续阅读 :-)
我正在尝试使用 golang 编写一个供我自己使用的 android 应用程序,而不使用 android-sdk 或 ndk(这是关键点)。这很简单,只需使用 golang 编写一个 http 服务,为 arm CPU 编译它,瞧我的应用程序正在运行,只需访问 http://localhost 即可访问。
为了我的应用程序的目的,我需要知道当前正在运行的前台应用程序,以精确定义它:

  • 前台应用程序是占据屏幕的应用程序,或者具有“Activity ”的应用程序(请原谅我不是 Android 开发人员)。
  • 前台应用程序所依赖的任何东西(例如服务)都不是我感兴趣的。
  • 如果手机被锁定/屏幕关闭,我希望解决方案告诉我没有前台应用程序。

  • 而且由于我不使用任何 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/

    相关文章:

    android - 我想在我的 activity.java 文件中使用 ToolBar,并且此工具栏必须位于仅包含 ListView 的 layout.xml 文件中。我该怎么做?

    Android 不可移动的快捷方式

    java.lang.OutOfMemoryError : Could not allocate JNI Env always android java 错误

    http - 戈朗 : how to check if an HTTP request is in the TCP payload bytes

    json - 如何检测接收到的 JSON 是否有未知字段

    android - calendar.get(Calendar.MONTH) == Calendar.JANUARY 给出一个 lint 错误

    具有自定义查询模式的 Android 应用程序操作

    go - 如何将变量从 init 函数(在 main.go 中)导入到不同的文件中?

    html - 无法在 html 中显示结构 slice

    GoLang nextafter & %g?