y61235 2013-07-23 06:18 采纳率: 0%
浏览 1099

有root权限,如何实现后台服务监控所有按键事件

 开发中遇到这样的问题,想实现一个后台服务监控用户所有的操作。
 最开始我用Runtime运行getevent命令来监控,发现的确是可行的,但是无法做到实时。并不是每次操作都会有信息反馈给你。不同的设备的情况还不同,有的设备需要操作2次事件,才会反馈信息给你,有的设备,需要操作很多次才一起把信息反馈给你。原因在于,反馈的信息会有一个缓存,缓存满了,你才会输出到流里面,你才可以读到。希望有大牛有更好的方法解决这个后台服务监控操作的问题。
  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-09 10:30
    关注

    如果你的设备是 Android 系统,可以尝试使用 Android 的 InputEvent 类,它可以帮助你监控系统的按键事件。


    你需要在 AndroidManifest.xml 中声明一个权限:

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

    然后,你就可以使用 InputEvent 类来读取系统的按键事件了。


    例如,你可以在后台服务中这样写:

    InputEvent event;
    while ((event = InputEvent.getInputEvent()) != null) {
        // 处理事件
    }
    

    这样,你就可以在后台服务中实时监控按键事件了。


    不过,这种方法的缺点是,你需要在系统中注册一个服务,并且这个服务需要拥有许多特殊的权限,比如 READ_INPUT_STATE 权限。这可能会带来安全风险,因此应该谨慎使用。


    如果你的设备是其他操作系统,可以尝试使用系统提供的相应 API 来实现类似的功能。

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站