楼主,你那个程序是要用的android的东西了。Google在android的SDK加了很多东西,也减去了原Java的很多的API,你想用那个程序模拟按键而绕开android是不可能的。

解决方案 »

  1.   

    总之,是不能“纯”java的。Android已不是原来那个java了,很多地方都改动过,只能是语法上的纯了。甲骨文公司起诉Google就是因此缘故。
      

  2.   


    谢谢你的回答,但是你并没有仔细看我的帖子  http://disanji.net/2011/05/10/android-basic-dalvik-vm-call/ 看了这个你就知道怎么运行纯java了
      

  3.   

    import android.app.Instrumentation;
    加了这个我编译就通不过
    你是怎么编译过的?
    Instrumentation  这个只是一个接口,肯定不能new Instrumentation() 这么用的
      

  4.   


    怎么可能编译都通不过 javac 你的java文件 -cp sdk中android.jar的地址 肯定能通过
    Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);
    就是这么用的。。
      

  5.   

    我引用错了
    import java.lang.instrument.Instrumentation;
    有空再看看
      

  6.   


    怎么给别人安装》??(叫别人用命令行装么) = =b
    打包成apk就要权限 不打包没意思。。自己玩。。
    虽然鸡肋 不过蛮有意思
      

  7.   


    可以把写好的jar包打包在一个apk中,然后apk运行是,把这个jar包copy到手机中,然后由这个apk运行
      

  8.   

    有2个小问题
    1、这种方式需要root权限吗?
       我这里貌似不root就无法运行
    2、楼主有通过这种方式和android系统交互的例子吗?
       比如:启动某个应用或者查询数据库之类的
      

  9.   


    1.不需要
    2.简单交互已经实现,复杂的需要调用native method,或需要需要系统上下文的就有上面说的问题了。
      

  10.   


    傻呀你。!! 这样不行的 你打包apk就要权限的。。汗!
    你确定打包了 apk? 没确定不要下定论谢谢
    你太天真了。。
    ps:如果可以 流氓应该漫天飞了。。
      

  11.   

    你根本没认真看文章。甚至没理解
     这完全是要依靠 adb来实现的。。
      

  12.   

    你是否好好看了文章。
    你是否使用了adb?这个是要adb的!
      

  13.   

    你可以发apk出来看看。:-)。。
    是否使用adb?
    呵呵
      

  14.   


    朋友,你到底会不会android 啊。在apk里边执行 Process process = Runtime.getRuntime().exec("dalvikvm -cp /sdcard/foo.jar Foo");在电脑命令行里执行  adb shell dalvikvm -cp /sdcard/foo.jar Foo   这还要我跟你讲????????
      

  15.   

    在framework那里有个按键的程序是把由monkeyEvent键值发送的给注释掉了,即使你加上了权限,底层是没有调用的,你把那个注释的改为非注释的就可以了
      

  16.   


    楼上什么意思 "在framework那里有个按键的程序是把由monkeyEvent键值发送的给注释掉了 "在自己的写的apk程序中 调用 Instrumentation inst=new Instrumentation();inst.sendKeyDownUpSync(4);
    是能够调用成功的,可以模拟按键,但是不能跨进程
      

  17.   


    你没理解我的意思。我是指你那个程序不是纯java开发的。就如一些简单的java代码直接贴在C#上也可以编译运行。其实你对比下android的api文档与java的api文档就明白了。
      

  18.   

    正解。本质上是因为
    android的dalvik vm跟sun的jvm不一致
    即便部分class能通用,有问题也是正常的。
    lz这是在做两者的磨合试验么?
      

  19.   


    纯java只是一种代称吧。。不要纠结,我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义
      

  20.   


    纯java只是一种代称吧。。不要纠结我发帖所要解决的重点问题不是这个,是用这种方式写在android下能运行的程序能够绕过系统权限。如果再纠结这个问题还是不要回帖了,没有意义
      

  21.   

    总结下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来玩
      

  22.   

    支持你的探索,但你没明白真正的意思。
    android机制是每人都有自己的vm,而jvm是一个的
    你要跑去用系统级别的东西,相当于跨越android的vm来相互之间调用,逃不过android的。
    你的java无论如何都在你启动的那个java环境中
    这就是你根本的问题,当然漏洞这种东西就在于探索,不能说没有。
    而你还没找到方向,单纯改造你的代码本就没什么意义。
      

  23.   

    你好问题解决来吗?请问你的代码是windows下编译的么?
    另外模拟鼠标在源码下参考
    http://hi.baidu.com/zhouhanqing/blog/item/1bfbaec593f4b5a48326acc7.html
      

  24.   

    SDK上怎么写纯java哟。是要在源码环境下吧。刚开始学,不太懂,忘指教。
      

  25.   

    楼主可否贴出代码来学习下?
    jar中能实现模拟按键功能吗?我现在公司的项目需要模拟键盘按键