我正在尝试在我的应用程序中实现一种vnc(基于oNaiP的droid-vnc-server)。由于鼠标事件不适用于我的设备,我正在尝试以下操作:从本机vnc帧缓冲服务器发送数据报,在Service
中捕获它们并使用Instrumentation
的{{1} }。这是需要许可的地方。
我听说你可以获得所有必需的权限,如果你使用Root Exploter,chmod和reset将.apk推送到sendPointerSync
,但这在我的情况下不起作用,我仍然得到/system/app
。我还尝试手动编辑SecurityException
文件。
有没有其他方法可以获得许可(可能会以某种方式降低它的安全级别?因为我只需要这个应用程序在我的设备上运行),或者可能采用不同的方式来完成我尝试完成的任务?
谢谢!
答案 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使用权限。