【问题标题】:Cyanogen /dev/uinput key injectionCyanogen /dev/uinput 键注入
【发布时间】:2010-10-29 12:49:46
【问题描述】:

我正在开发 Android 的 Synergy 端口(请参阅 synergy-foss.org)。

我发现注入击键的唯一方法是使用 Cyanogen Mod 并将击键写入 /dev/uinput。但是,我的应用程序没有写入 /dev/uinput 的权限。我发现解决这个问题的唯一方法是 chmod 777 /dev/uinput。

但是...似乎在一段时间后 /dev/uinput 上的权限被重置了——通过什么?我不知道。

有没有更好的方法,或者有没有一种方法可以在 Cyanogen mod 中以 root 身份运行您的应用程序?

谢谢

【问题讨论】:

标签: android key code-injection cyanogenmod


【解决方案1】:

看看IWindowManager.injectKeyEvent。它位于平台 SDK 的 layoutlib.jar 中。我不确定应用程序需要什么权限才能调用它(例如是否为 root),但这是一个开始。我认为您不需要 root 来执行该方法。

我用它玩了一会儿,能够从我的电脑键盘上注入击键,让设备“重复”这个动作。

【讨论】:

  • 我相信 IWindowManager 只允许您将击键注入您自己的应用程序。我需要将击键(希望是鼠标移动)注入所有应用程序
  • 我的应用程序在 Windows 上运行,并通过 tcp 连接将数据发送到设备上正在运行的线程。它将键盘事件注入到任何正在运行的应用程序中。
  • 有趣。我被引导相信——从这篇文章:mylifewithandroid.blogspot.com/2009/01/…——它只适用于你的应用程序。来源是否在某处可用?
【解决方案2】:

嗯,我想这很简单

Process p = Runtime.getRuntime().exec("su");

【讨论】:

  • 不,没有那么简单,至少如果您打算以 root 身份完成任何事情。 su 不会提升当前进程的权限,它会创建一个新的(默认为 shell)进程作为不同的(默认 root)用户。你将不得不告诉你想要它做什么,要么通过命令行参数启动它,要么通过获取它的标准输入并将击键注入其中。
  • 正确。我必须执行 su 然后 chmod /dev/uniput 从输出流
  • 问题在于,你现在不允许任何应用这样做吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2018-09-05
  • 2019-11-22
相关资源
最近更新 更多