安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
/**
* 用root权限执行Linux下的Shell指令
*
* @author jzj
* @since 2014-09-09
*/
public class RootShellCmd { private OutputStream os; /**
* 执行shell指令
*
* @param cmd
* 指令
*/
public final void exec(String cmd) {
try {
if (os == null) {
os = Runtime.getRuntime().exec("su").getOutputStream();
}
os.write(cmd.getBytes());
os.flush();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 后台模拟全局按键
*
* @param keyCode
* 键值
*/
public final void simulateKey(int keyCode) {
exec("input keyevent " + keyCode + "\n");
}
}
通过Runtime实现,代码如下:
- try
- {
- String keyCommand = "input keyevent " + KeyEvent.KEYCODE_MENU;
- Runtime runtime = Runtime.getRuntime();
- Process proc = runtime.exec(keyCommand);
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
这个代码是模拟菜单键,模拟其它按键只需将KeyEvent.KEYCODE_MENU替换成其它键值。
缺点:反应速度较慢
以下附带各KeyCode值:
- KEYCODE_UNKNOWN=0;
- KEYCODE_SOFT_LEFT=1;
- KEYCODE_SOFT_RIGHT=2;
- KEYCODE_HOME=3;
- KEYCODE_BACK=4;
- KEYCODE_CALL=5;
- KEYCODE_ENDCALL=6;
- KEYCODE_0=7;
- KEYCODE_1=8;
- KEYCODE_2=9;
- KEYCODE_3=10;
- KEYCODE_4=11;
- KEYCODE_5=12;
- KEYCODE_6=13;
- KEYCODE_7=14;
- KEYCODE_8=15;
- KEYCODE_9=16;
- KEYCODE_STAR=17;
- KEYCODE_POUND=18;
- KEYCODE_DPAD_UP=19;
- KEYCODE_DPAD_DOWN=20;
- KEYCODE_DPAD_LEFT=21;
- KEYCODE_DPAD_RIGHT=22;
- KEYCODE_DPAD_CENTER=23;
- KEYCODE_VOLUME_UP=24;
- KEYCODE_VOLUME_DOWN=25;
- KEYCODE_POWER=26;
- KEYCODE_CAMERA=27;
- KEYCODE_CLEAR=28;
- KEYCODE_A=29;
- KEYCODE_B=30;
- KEYCODE_C=31;
- KEYCODE_D=32;
- KEYCODE_E=33;
- KEYCODE_F=34;
- KEYCODE_G=35;
- KEYCODE_H=36;
- KEYCODE_I=37;
- KEYCODE_J=38;
- KEYCODE_K=39;
- KEYCODE_L=40;
- KEYCODE_M=41;
- KEYCODE_N=42;
- KEYCODE_O=43;
- KEYCODE_P=44;
- KEYCODE_Q=45;
- KEYCODE_R=46;
- KEYCODE_S=47;
- KEYCODE_T=48;
- KEYCODE_U=49;
- KEYCODE_V=50;
- KEYCODE_W=51;
- KEYCODE_X=52;
- KEYCODE_Y=53;
- KEYCODE_Z=54;
- KEYCODE_COMMA=55;
- KEYCODE_PERIOD=56;
- KEYCODE_ALT_LEFT=57;
- KEYCODE_ALT_RIGHT=58;
- KEYCODE_SHIFT_LEFT=59;
- KEYCODE_SHIFT_RIGHT=60;
- KEYCODE_TAB=61;
- KEYCODE_SPACE=62;
- KEYCODE_SYM=63;
- KEYCODE_EXPLORER=64;
- KEYCODE_ENVELOPE=65;
- KEYCODE_ENTER=66;
- KEYCODE_DEL=67;
- KEYCODE_GRAVE=68;
- KEYCODE_MINUS=69;
- KEYCODE_EQUALS=70;
- KEYCODE_LEFT_BRACKET=71;
- KEYCODE_RIGHT_BRACKET=72;
- KEYCODE_BACKSLASH=73;
- KEYCODE_SEMICOLON=74;
- KEYCODE_APOSTROPHE=75;
- KEYCODE_SLASH=76;
- KEYCODE_AT=77;
- KEYCODE_NUM=78;
- KEYCODE_HEADSETHOOK=79;
- KEYCODE_FOCUS=80;//*Camera*focus
- KEYCODE_PLUS=81;
- KEYCODE_MENU=82;
- KEYCODE_NOTIFICATION=83;
- KEYCODE_SEARCH=84;
- KEYCODE_MEDIA_PLAY_PAUSE=85;
- KEYCODE_MEDIA_STOP=86;
- KEYCODE_MEDIA_NEXT=87;
- KEYCODE_MEDIA_PREVIOUS=88;
- KEYCODE_MEDIA_REWIND=89;
- KEYCODE_MEDIA_FAST_FORWARD=90;
- KEYCODE_MUTE=91;
安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)的更多相关文章
- 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比 ...
- Delphi编写的Android程序获取Root权限实现(2015.4.15更新,支持Android 4.4)
借助谷歌,并经过本大侠施展坑.蒙.拐.骗.偷五大绝技,终于成功实现在Delphi下获取Root权限并将其扩展为一个完整功能更加完整的TQAndroidShell记录,在华为荣耀2(Android 4. ...
- Blender模拟全局照明的简单方法
https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Faked_Gi_with_Blender_internal模拟全局照明最简单的方法是在我们 ...
- 使用fakeroot模拟root权限执行程序(转)
Hack #57: 使用fakeroot模拟root权限执行程序 fakeroot是什么 例如Debian在生成package的时候,编译完之后,不能立刻在当前环境执行make install,需要执 ...
- 安卓学习笔记--已root设备应用请求root权限
网上查到的方法 Process process = null; DataOutputStream os = null; try { String cmd = "chmod 777 " ...
- Android权限说明 system权限 root权限
原文链接:http://blog.csdn.net/rockwupj/article/details/8618655 Android权限说明 Android系统是运行在Linux内核上的,Androi ...
- Stick hero "攻略", android 代码编写与分析(后台截屏, 后台模拟点击)
论文写完,感觉头脑好久没被灵感刺激了,前些天室友介绍了个小游戏,我突然来了灵感可以写的简单的android 程序实现自动运行.主要的过会为三步: 1,Android 屏幕的获取.因为安全的原因,过程比 ...
- [Android Pro] Android fastboot刷机和获取Root权限
参考文章: https://developers.google.com/android/nexus/images 转载自: http://www.inexus.co/article-1280-1 ...
- 取之有道——巧用Root权限 启动其他APP中的Activity
这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法. 首先说一下这样做的目的:最近博主在攻克一个技术难点,就是搞定某些三方系统中,对于应用权限的限制.为此给出用户指导,引导用户启动 ...
随机推荐
- [NSURL URLWithString:] returns nil
You need to escape the non-ASCII characters in your hardcoded URL as well: //localisationName is a a ...
- shell特殊符号cut命令 sort_wc_uniq命令 tee_tr_split命令 shell特殊符号
shell特殊符号cut命令 特殊符号 * 通配符,任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 c=\$a\$b echo $c | 管道符 cat 1.txt |less ...
- hql date比较
补充:相等时用to_char,比较大小(<或>)时用 时间格式(如果不是时间格式可以用to_date) java.util.Date date=new java.util.Date(); ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...
- storm学习之七-storm UI页面参数详解
http://lbxc.iteye.com/blog/1522318 --参考文章 http://blog.csdn.net/rong_89/article/details/39473917 --参考 ...
- 18 如何使用go来采集windows的基本硬件信息后发送到CMDB的服务器上
preface 之前我使用python写了cmdb采集的脚本,打包成exe的二进制文件后放在windows上执行,也达到了预期的效果. 但是最近部门要上open-falcon监控体系,每个服务器都要安 ...
- 如何在Linux系统中安装VMware
首先打开vmware官网的下载链接:https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_works ...
- c# 开发window服务
http://jingyan.baidu.com/article/fa4125acb71a8628ac709226.html 安装 cmd 输入 InstallUtil.exe E:\TestApp\ ...
- centos6.8 安装Python2.7后, yum出现“No module named yum”错误
出现yum错误:No module named yum 解决方法,查看 /usr/bin下python有哪几个版本 ll /usr/bin 我这里是:2.6 和 2.7 (刚安装的) 由于yum命 ...
- jquery easyui datagrid 无滚动条,datagrid 没垂直滚动条
jquery easyui datagrid 无滚动条,datagrid 没垂直滚动条 ============================== 蕃薯耀 2018年2月6日 http://www. ...