android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法]
2013-04-27 01:20
537 查看
目的:在非源码环境下调用隐藏api实现模拟按键的功能。
首先需要下载在android4.0源码环境下编译出来的classes.jar,或者如果你有条件那么可以直接在源码环境下编译(此方法该文不讨论)。
因为我在ubuntu下没能下载完源代码,所以直接采用classes.jar导入到eclipse的方法。
1. classes.jar可以去我的资源中下载classes.jar
2. 有了classes.jar之后,在eclipse界面,拖拉jar进项目的libs目录,使用用户库的方式添加jar
可以参考Android中使用隐藏API(大量图解)
3. 导入之后隐藏的类和方法就能使用了,但是在编译时eclipse有可能会报错:Unable to execute dex: Java heap space
解决方法是修改eclipse.ini:参考博文
4. 更改了之后又可能会遇见eclipse报错: Unable to execute dex: Cannot merge new index 67208 into a non-jumbo instruction!
解决方法:project->clean;清理一下之后重新编译就好了
5. injectKeyEvent的具体用法可以参考:博文
别忘了在项目的manifest文件中添加:sharedUserId和INJECT_EVENTS权限
添加之后INJECT_EVENTS会报错,此时只要在菜单栏是点project->clean就可以去掉错误然后编译
6. 编译之后直接安装会安装失败,因为没有该apk没有系统权限
解决方法是:下载Signapk工具,可以去我的资源中下载
用法是在命令行下使用命令:java -jar SignApk.jar platform.x509.pem platform.pk8
app_unsigned.apk app_signed.apk
至此,终于在非源码环境下待用了隐藏api实现了模拟按键的功能,辛苦啊。
有任何疑问都可以留言或者发邮件给我263113565@qq.com,或者直接加这个QQ号一起讨论,再或者加Q群:134239166
=============================分割线=====================================
Q:因为使用原生系统的签名,所以经常有朋友来问我厂商定制的ROM怎么办
A:我后来想到可以使用jni的方法跳过,下面是我找的一些资料,仅仅提供给大家一个更广的思路,这个方法我并没有实现,仅供参考,相信会是个更好的办法
参考一 参考二
首先需要下载在android4.0源码环境下编译出来的classes.jar,或者如果你有条件那么可以直接在源码环境下编译(此方法该文不讨论)。
因为我在ubuntu下没能下载完源代码,所以直接采用classes.jar导入到eclipse的方法。
1. classes.jar可以去我的资源中下载classes.jar
2. 有了classes.jar之后,在eclipse界面,拖拉jar进项目的libs目录,使用用户库的方式添加jar
可以参考Android中使用隐藏API(大量图解)
3. 导入之后隐藏的类和方法就能使用了,但是在编译时eclipse有可能会报错:Unable to execute dex: Java heap space
解决方法是修改eclipse.ini:参考博文
4. 更改了之后又可能会遇见eclipse报错: Unable to execute dex: Cannot merge new index 67208 into a non-jumbo instruction!
解决方法:project->clean;清理一下之后重新编译就好了
5. injectKeyEvent的具体用法可以参考:博文
别忘了在项目的manifest文件中添加:sharedUserId和INJECT_EVENTS权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xxxx.packagename" android:sharedUserId="android.uid.system" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.INJECT_EVENTS" />
添加之后INJECT_EVENTS会报错,此时只要在菜单栏是点project->clean就可以去掉错误然后编译
6. 编译之后直接安装会安装失败,因为没有该apk没有系统权限
解决方法是:下载Signapk工具,可以去我的资源中下载
用法是在命令行下使用命令:java -jar SignApk.jar platform.x509.pem platform.pk8
app_unsigned.apk app_signed.apk
至此,终于在非源码环境下待用了隐藏api实现了模拟按键的功能,辛苦啊。
有任何疑问都可以留言或者发邮件给我263113565@qq.com,或者直接加这个QQ号一起讨论,再或者加Q群:134239166
=============================分割线=====================================
Q:因为使用原生系统的签名,所以经常有朋友来问我厂商定制的ROM怎么办
A:我后来想到可以使用jni的方法跳过,下面是我找的一些资料,仅仅提供给大家一个更广的思路,这个方法我并没有实现,仅供参考,相信会是个更好的办法
参考一 参考二
相关文章推荐
- android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法](转)
- android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法]
- IWindowManager.injectKeyEvent模拟按键
- IWindowManager.injectKeyEvent模拟按键
- 使用dispatchKeyEvent onkeyevent return true没得按键音问题
- 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
- Android学习总结一:adb的使用、打电话、Button监听两种方法、发短信、ADT23.0.2版本兼容问题
- 【Android进阶】关于PagerAdapter的使用方法的总结
- Android setTag方法的key问题解决办法
- Android 使用 sendevent 模拟鼠标和键盘事件
- [置顶] android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方法,完美解决问题
- android开发bug解决方法或者studio使用问题汇总
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- 使用js中的replace()方法问题总结
- androidstuido使用问题总结一
- Android中使用代码截图的各种方法总结
- Android Butterknife 8.4.0 使用方法总结
- Android 8.0系统上使用WindowManager添加view的一个问题
- Android的简单应用(二)——使用dispatchKeyEvent双击退出程序
- Android中使用代码截图的各种方法总结