关于android系统运行纯java的讨论 楼主,你那个程序是要用的android的东西了。Google在android的SDK加了很多东西,也减去了原Java的很多的API,你想用那个程序模拟按键而绕开android是不可能的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 总之,是不能“纯”java的。Android已不是原来那个java了,很多地方都改动过,只能是语法上的纯了。甲骨文公司起诉Google就是因此缘故。 谢谢你的回答,但是你并没有仔细看我的帖子 http://disanji.net/2011/05/10/android-basic-dalvik-vm-call/ 看了这个你就知道怎么运行纯java了 import android.app.Instrumentation;加了这个我编译就通不过你是怎么编译过的?Instrumentation 这个只是一个接口,肯定不能new Instrumentation() 这么用的 怎么可能编译都通不过 javac 你的java文件 -cp sdk中android.jar的地址 肯定能通过Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);就是这么用的。。 我引用错了import java.lang.instrument.Instrumentation;有空再看看 怎么给别人安装》??(叫别人用命令行装么) = =b打包成apk就要权限 不打包没意思。。自己玩。。虽然鸡肋 不过蛮有意思 可以把写好的jar包打包在一个apk中,然后apk运行是,把这个jar包copy到手机中,然后由这个apk运行 有2个小问题1、这种方式需要root权限吗? 我这里貌似不root就无法运行2、楼主有通过这种方式和android系统交互的例子吗? 比如:启动某个应用或者查询数据库之类的 1.不需要2.简单交互已经实现,复杂的需要调用native method,或需要需要系统上下文的就有上面说的问题了。 傻呀你。!! 这样不行的 你打包apk就要权限的。。汗!你确定打包了 apk? 没确定不要下定论谢谢你太天真了。。ps:如果可以 流氓应该漫天飞了。。 你根本没认真看文章。甚至没理解 这完全是要依靠 adb来实现的。。 你是否好好看了文章。你是否使用了adb?这个是要adb的! 你可以发apk出来看看。:-)。。是否使用adb?呵呵 朋友,你到底会不会android 啊。在apk里边执行 Process process = Runtime.getRuntime().exec("dalvikvm -cp /sdcard/foo.jar Foo");在电脑命令行里执行 adb shell dalvikvm -cp /sdcard/foo.jar Foo 这还要我跟你讲???????? 在framework那里有个按键的程序是把由monkeyEvent键值发送的给注释掉了,即使你加上了权限,底层是没有调用的,你把那个注释的改为非注释的就可以了 楼上什么意思 "在framework那里有个按键的程序是把由monkeyEvent键值发送的给注释掉了 "在自己的写的apk程序中 调用 Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);是能够调用成功的,可以模拟按键,但是不能跨进程 你没理解我的意思。我是指你那个程序不是纯java开发的。就如一些简单的java代码直接贴在C#上也可以编译运行。其实你对比下android的api文档与java的api文档就明白了。 正解。本质上是因为android的dalvik vm跟sun的jvm不一致即便部分class能通用,有问题也是正常的。lz这是在做两者的磨合试验么? 纯java只是一种代称吧。。不要纠结,我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义 纯java只是一种代称吧。。不要纠结我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义 总结下UnsatisfiedLinkError 应该是连接库文件错误sendKeyDownUpSync--》sendKeySync--->IWindowManager.Stub.asInterface(ServiceManager.getService("window"))) .injectKeyEvent(event, true); 错误应该是ServiceManager.getService("window")ServiceManager.getService("window")---》 BinderInternal.java native IBinder getContextObject();底层实现 android_util_Binder.cpp --》jobject android_os_BinderInternal_getContextObject编译后库文件 libandroid_servers.so暂时没头绪 可以考虑jni来玩 支持你的探索,但你没明白真正的意思。android机制是每人都有自己的vm,而jvm是一个的你要跑去用系统级别的东西,相当于跨越android的vm来相互之间调用,逃不过android的。你的java无论如何都在你启动的那个java环境中这就是你根本的问题,当然漏洞这种东西就在于探索,不能说没有。而你还没找到方向,单纯改造你的代码本就没什么意义。 你好问题解决来吗?请问你的代码是windows下编译的么?另外模拟鼠标在源码下参考http://hi.baidu.com/zhouhanqing/blog/item/1bfbaec593f4b5a48326acc7.html SDK上怎么写纯java哟。是要在源码环境下吧。刚开始学,不太懂,忘指教。 楼主可否贴出代码来学习下?jar中能实现模拟按键功能吗?我现在公司的项目需要模拟键盘按键 android 2.2如何完全退出程序?? android launcher中添加文件夹 线程再次start,崩? 打开framebuffer设备失败 提示框的用法 apk的安装原理或实现? 有关init.rc里面的问题,请高手赐教 android 有关menu JNI消息如何自动传递给java呢? 在eclipse中,鼠标悬停在类名、方法名上,没有相关信息,一片空白,是怎么回事? 安卓超诡异InflateException!!!绝对不是手贱打错啊。。 调用gps信息在android2.2下正常,但是2.3以上gps设备显示出来,就是无法读出经纬度
谢谢你的回答,但是你并没有仔细看我的帖子 http://disanji.net/2011/05/10/android-basic-dalvik-vm-call/ 看了这个你就知道怎么运行纯java了
加了这个我编译就通不过
你是怎么编译过的?
Instrumentation 这个只是一个接口,肯定不能new Instrumentation() 这么用的
怎么可能编译都通不过 javac 你的java文件 -cp sdk中android.jar的地址 肯定能通过
Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);
就是这么用的。。
import java.lang.instrument.Instrumentation;
有空再看看
怎么给别人安装》??(叫别人用命令行装么) = =b
打包成apk就要权限 不打包没意思。。自己玩。。
虽然鸡肋 不过蛮有意思
可以把写好的jar包打包在一个apk中,然后apk运行是,把这个jar包copy到手机中,然后由这个apk运行
1、这种方式需要root权限吗?
我这里貌似不root就无法运行
2、楼主有通过这种方式和android系统交互的例子吗?
比如:启动某个应用或者查询数据库之类的
1.不需要
2.简单交互已经实现,复杂的需要调用native method,或需要需要系统上下文的就有上面说的问题了。
傻呀你。!! 这样不行的 你打包apk就要权限的。。汗!
你确定打包了 apk? 没确定不要下定论谢谢
你太天真了。。
ps:如果可以 流氓应该漫天飞了。。
这完全是要依靠 adb来实现的。。
你是否使用了adb?这个是要adb的!
是否使用adb?
呵呵
朋友,你到底会不会android 啊。在apk里边执行 Process process = Runtime.getRuntime().exec("dalvikvm -cp /sdcard/foo.jar Foo");在电脑命令行里执行 adb shell dalvikvm -cp /sdcard/foo.jar Foo 这还要我跟你讲????????
楼上什么意思 "在framework那里有个按键的程序是把由monkeyEvent键值发送的给注释掉了 "在自己的写的apk程序中 调用 Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);
是能够调用成功的,可以模拟按键,但是不能跨进程
你没理解我的意思。我是指你那个程序不是纯java开发的。就如一些简单的java代码直接贴在C#上也可以编译运行。其实你对比下android的api文档与java的api文档就明白了。
android的dalvik vm跟sun的jvm不一致
即便部分class能通用,有问题也是正常的。
lz这是在做两者的磨合试验么?
纯java只是一种代称吧。。不要纠结,我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义
纯java只是一种代称吧。。不要纠结我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义
sendKeyDownUpSync--》sendKeySync--->IWindowManager.Stub.asInterface(ServiceManager.getService("window")))
.injectKeyEvent(event, true); 错误应该是ServiceManager.getService("window")ServiceManager.getService("window")---》 BinderInternal.java native IBinder getContextObject();
底层实现 android_util_Binder.cpp --》jobject android_os_BinderInternal_getContextObject
编译后库文件 libandroid_servers.so暂时没头绪 可以考虑jni来玩
android机制是每人都有自己的vm,而jvm是一个的
你要跑去用系统级别的东西,相当于跨越android的vm来相互之间调用,逃不过android的。
你的java无论如何都在你启动的那个java环境中
这就是你根本的问题,当然漏洞这种东西就在于探索,不能说没有。
而你还没找到方向,单纯改造你的代码本就没什么意义。
另外模拟鼠标在源码下参考
http://hi.baidu.com/zhouhanqing/blog/item/1bfbaec593f4b5a48326acc7.html
jar中能实现模拟按键功能吗?我现在公司的项目需要模拟键盘按键