将程序变成system app 实现home、back、menu等按键模拟
2014-10-15 15:27
197 查看
1.使一个程序成为系统程序
我们必须在manifest 中配置android:sharedUserId="android.uid.system"
这个权限就是为了允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流。
2.模拟home、back、menu
3.添加系统签名
完成上面2个步骤之后,安装程序发现会出现Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]错误。因为使用eclipse编译后的程序不带有platform签名,所以作为系统程序安装不了。
所以需要对apk进行签名
将签名工具(signapk.jar)、签名证书(platform.pk8和platform.x509.pem)及编译出来的apk文件都放到同一目录
终端进入该目录执行java -jar signapk.jar -w platform.x509.pem platform.pk8 XXX.apk out/XXX.apk
拿出out目录下被签名后的apk进行安装
4.附上签名工具
下载签名工具
我们必须在manifest 中配置android:sharedUserId="android.uid.system"
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flyaudio.floatwindows" android:versionCode="1" android:sharedUserId="android.uid.system" android:versionName="1.0" >加上权限:<uses-permission android:name="android.permission.INJECT_EVENTS" />
这个权限就是为了允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流。
2.模拟home、back、menu
private void homePress() { Intent mHomeIntent = new Intent(Intent.ACTION_MAIN); mHomeIntent.addCategory(Intent.CATEGORY_HOME); mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); getContext().startActivity(mHomeIntent); } private void backPress() { Runtime runtime = Runtime.getRuntime(); try { runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void menuPress() { Runtime runtime = Runtime.getRuntime(); try { runtime.exec("input keyevent " + KeyEvent.KEYCODE_MENU); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }其实还有一种方法就是:
new Thread(){ public void run() { try{ Instrumentation inst = new Instrumentation(); inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); } catch (Exception e) { Log.e("Exception when onBack", e.toString()); } } }.start();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);这里可以传入任何键值。
3.添加系统签名
完成上面2个步骤之后,安装程序发现会出现Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]错误。因为使用eclipse编译后的程序不带有platform签名,所以作为系统程序安装不了。
所以需要对apk进行签名
将签名工具(signapk.jar)、签名证书(platform.pk8和platform.x509.pem)及编译出来的apk文件都放到同一目录
终端进入该目录执行java -jar signapk.jar -w platform.x509.pem platform.pk8 XXX.apk out/XXX.apk
拿出out目录下被签名后的apk进行安装
4.附上签名工具
下载签名工具
相关文章推荐
- android 按键注入,模拟back,home,menu按键
- android隐藏底部虚拟键Navigation Bar实现全屏(虚拟按键home,back,menu)
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- 关于程序响应 HOME 及 BACK 按键
- android软件方式模拟硬按键的功能,包括home、back等所有按键
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- 模拟OICQ的实现思路和核心程序(三)
- 如何让程序检测你的按键,实现WEB热键功能呢?
- QQ 静态截图程序模拟实现
- IE和Firefox下模拟按键的实现
- 模拟OICQ的实现思路和核心程序(三)
- VS2005 WinForm程序TextBox变成下划线的一种实现方法
- 模拟OICQ的实现思路和核心程序(二)
- C语言实现用程序数据段空间模拟内存的动态分配
- 开发键盘过滤驱动实现模拟按键过程中遇到的问题___续
- 介绍如何通过代码实现模拟按键的函数
- 模拟OICQ的实现思路和核心程序(一)
- 介绍如何通过代码实现模拟按键的函数
- 驱动中实现模拟键盘按键