root设备上的INJECT_EVENTS权限

时间:2012-03-15 13:51:50

标签: android permissions instrumentation vnc

我正在尝试在我的应用程序中实现一种vnc(基于oNaiP的droid-vnc-server)。由于鼠标事件不适用于我的设备,我正在尝试以下操作:从本机vnc帧缓冲服务器发送数据报,在Service中捕获它们并使用Instrumentation的{​​{1} }。这是需要许可的地方。 我听说你可以获得所有必需的权限,如果你使用Root Exploter,chmod和reset将.apk推送到sendPointerSync,但这在我的情况下不起作用,我仍然得到/system/app。我还尝试手动编辑SecurityException文件。

有没有其他方法可以获得许可(可能会以某种方式降低它的安全级别?因为我只需要这个应用程序在我的设备上运行),或者可能采用不同的方式来完成我尝试完成的任务?

谢谢!

3 个答案:

答案 0 :(得分:3)

然后你可能没有足够的搜索。是的,很遗憾Android默认不提供它,但这并不意味着它不可行。

唯一的问题是你需要root。因此,如果你有root,那么你可以将/ dev / input / eventX文件的权限更改为可写。

如果文件是可写的,您可以通过直接写入输入事件节点,将自定义键和触摸事件注入任何应用程序。

我写了一个小型图书馆,可在此处获取:http://code.google.com/p/android-event-injector/

它就是这样:自动chmod设置输入开发者的权限,并使用JNI连接本机文件。然后它公开了一个简单的Java接口,以便在Android项目中使用。

答案 1 :(得分:2)

所以,经过几天的谷歌搜索和研究,我发现没有办法做到这一点(好吧,除了显然不可能的事情,比如创建我自己的版本的android来获得系统签名),并设计了一种解决方法:vnc服务器(取自droid-vnc-server v.0.72)打开一个套接字并将所有指针事件写入其中(类型和坐标);然后有一个服务从这个套接字读取并通过多个sendevent命令注入事件(我也可以从本机代码中执行它,但是因为我吮吸c ++,我决定不打扰:))。

这很好用(令人惊讶!),但我并不完全满意,因为在不同的设备上有不同的常量(比如,事件类型,最小值和最大值等),我必须要么从getevent -p解析它们,或指定配置文件。

答案 2 :(得分:0)

您是否在清单中添加了INJECT_EVENTS使用权限。