关于android系统运行纯java的讨论
请看完整篇帖子,不管你能不能解答对你都将很有帮助eoe上闲逛看到了一片帖子
http://www.eoeandroid.com/thread-26027-1-1.html
[Android 机制] 请教一个sendkey的问题 [color=rgb(153, 153, 153) !important][复制链接]
bit_eric
写了一个android的测试程序,发现在通话状态下测试程序不能sendCharacterSync(KeyEvent.KEYCODE_ENDCALL);
抛出异常java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
权限什么的都加了,键盘锁也解了,在非通话状态下sendCharacterSync(KeyEvent.KEYCODE_ENDCALL);是可以的
所以我猜是不是android不允许向通话这种底层程序发送sendkey事件?
请路过帮顶,高人解答,感激不尽
[tr][/tr]
zhengmine
哈哈,我知道怎么解决,我监听和注入任意外部输入事件都实现了
zhengmine
google的权限设置很白痴,要绕过权限很容易,你不写android,纯java就不会有权限问题,google在android系统中相当于一个集成者的角色,我在其中很少看到智慧的光芒,可以说Android在设计上不怎么样
[tr][/tr]
zhengmine
励精图治 Ⅳ
Android 有系统service提供此功能 你查查injectKeyEvent,你可以写个纯java的程序调用此service,系统则不会检查你的权限
zhengmine
是你没看清楚我说的,我说让你写一个纯java的程序,不是android的apk,系统不会提示没权限的,因为写的不是android,就相当于linux下的java
LCamel
試了injectKeyEvent, zhengmine 兄的方法確實可行, 也不用 root, 感謝!
android能运行纯java而且还没有权限限制,那岂不是。。。。让人有很多想象空间,所以觉得研究下这个方法
在网上找到一片基本的文章 http://disanji.net/2011/05/10/android-basic-dalvik-vm-call/
是写在android系统里边运行
class Foo {
public static void main(String[] args) {System.out.println("Hello, world"); }}能正常运行,之后又写了一个纯java的联网程序也正常运行且不需要<uses-permission android:name="android.permission.INTERNET"></uses-permission>感觉很爽,终于能突破android权限做一些事了。
于是我又写了一个
import android.app.Instrumentation;
class Press {
public static void main(String[] args) {
System.out.println("Hello, world");
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(4);
}
}
模拟按键的程序,编译打jar包都没有问题,可运行时却出现了
Hello, world
java.lang.UnsatisfiedLinkError: getContextObject
at com.android.internal.os.BinderInternal.getContextObject(Native Method
)
at android.os.ServiceManager.getIServiceManager(ServiceManager.java:39)
at android.os.ServiceManager.getService(ServiceManager.java:55)
at android.app.Instrumentation.sendKeySync(Instrumentation.java:859)
at android.app.Instrumentation.sendKeyDownUpSync(Instrumentation.java:87
1)
at Press.main(Press.java:8)
at dalvik.system.NativeStart.main(Native Method)
错误,这个错误已经困扰我好几天了,今天把研究成果和问题拿出来和大家一起讨论下,看看有没有大侠能够解决的