android 获取硬件输入
来源:互联网 发布:网络舆论害人的例子 编辑:程序博客网 时间:2024/06/05 16:14
是上一篇文章中遇到的问题。背景是这样的:
0,我想输入中文
1,我把中文放到粘贴板了
2,我想输出ctrl+v 粘贴缓存的中文
在第二步的时候一直走不通,明明virtualbox是可以的。
问题分两步,
A,如果是android7(API24) 可以这样做:
参考KeyEvent
adb shell input keyevent KEYCODE_PASTE
B,如果是android6及以下,则需要组合键。
可以在键盘上实操一下,获得当前执行的按键码:
adb shell getevent
以virtualbox 为例,ctrl+v 的输出是:
add device 6: /dev/input/event5 name: "AT Translated Set 2 keyboard"/dev/input/event5: 0004 0004 0000001d/dev/input/event5: 0001 001d 00000001/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000002f/dev/input/event5: 0001 002f 00000001/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000002f/dev/input/event5: 0001 002f 00000000/dev/input/event5: 0000 0000 00000000/dev/input/event5: 0004 0004 0000001d/dev/input/event5: 0001 001d 00000000/dev/input/event5: 0000 0000 00000000
所以,可以这样子输入回去
root@x86_64:/ # sendevent /dev/input/event5 4 4 29 &&> sendevent /dev/input/event5 1 29 1 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 47 && > sendevent /dev/input/event5 1 47 1 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 47 &&> sendevent /dev/input/event5 1 47 0 &&> sendevent /dev/input/event5 0 0 0 &&> sendevent /dev/input/event5 4 4 29 &&> sendevent /dev/input/event5 1 29 0 &&> sendevent /dev/input/event5 0 0 0
这个时候,在virtualbox上的虚拟机里,就看到粘贴上去的文字了。
ok,到了物理机上,怎么办呢
root@x86_64:/ # geteventadd device 1: /dev/input/event17 name: "HID 04f3:0103"add device 2: /dev/input/event16 name: "HID 04f3:0103"add device 3: /dev/input/event3 name: "PixArt USB Optical Mouse"could not get driver version for /dev/input/mouse0, Not a typewriteradd device 4: /dev/input/event15 name: "Android Power Button"could not get driver version for /dev/input/mice, Not a typewriteradd device 5: /dev/input/event1 name: "Power Button"add device 6: /dev/input/event0 name: "Sleep Button"add device 7: /dev/input/event2 name: "Power Button"add device 8: /dev/input/event14 name: "PC Speaker"add device 9: /dev/input/event13 name: "HDA Intel PCH HDMI/DP,pcm=8"add device 10: /dev/input/event12 name: "HDA Intel PCH HDMI/DP,pcm=7"add device 11: /dev/input/event11 name: "HDA Intel PCH HDMI/DP,pcm=3"add device 12: /dev/input/event10 name: "HDA Intel PCH Front Headphone"add device 13: /dev/input/event9 name: "HDA Intel PCH Line Out"add device 14: /dev/input/event8 name: "HDA Intel PCH Line"add device 15: /dev/input/event7 name: "HDA Intel PCH Rear Mic"add device 16: /dev/input/event6 name: "HDA Intel PCH Front Mic"add device 17: /dev/input/event5 name: "Video Bus"add device 18: /dev/input/event4 name: "Eee PC WMI hotkeys"
(注:这个需要权限,普通应用拿的时候提示是permission denied)
所以问题是:device是可拆卸的,所以sendevent写死设备号,以后会莫名其妙的跪的。
最近还是修改了输入法,用输入法支持粘贴。
发现还是很有意思的,设备的硬件输入都是在像getevent输出的那样,输出一个个指令。
那么如果应用有权限,可以读到这些指令,就可以清晰的获得用户(人)对手机的操作。
在某些时候,还可以复现这些操作,让系统响应复现的操作。
开个脑洞:手机root之后,装了某些恶意软件,输入密码的时候,恶意软件就可以读到密码的位置。(“安全键盘”之类的只是某种自wei而已)
阅读全文
0 0
- android 获取硬件输入
- uevent-android串口获取硬件输入信息
- android获取硬件信息
- Android 获取唯一硬件编号
- android 获取设备硬件信息
- 获取Android设备硬件信息
- android 获取硬件的ID
- Android获取硬件设备信息
- Android获取硬件设备信息
- Android获取硬件设备信息
- 如何获取Android的硬件信息
- 【Android】获取手机的相关硬件信息
- 【Android】获取手机的相关硬件信息
- android 获取手机的一些硬件信息
- android 通过Build获取手机硬件信息
- android 获取手机硬件imei信息
- Android 获取手机的相关硬件信息
- Android开发获取设备硬件相关信息
- 基于Java的消息队列
- IDEA 启动Tomcat指定显示jsp文件
- openCV中的机器学习算法
- eventBus混淆代码
- dubbo框架中Main方法运行spring容器
- android 获取硬件输入
- 百度离职总结:如何做个好员工?
- 死锁的调试方法
- 私有继承
- 【随笔】关于前端与英语阅读
- 数据结构第三章实验2.实现链栈的各种基本运算
- Android studio 2.3.3 生成.jar包
- mysql中MyISAM引擎和InnoDB引擎差别
- bzoj2141 分块套树状数组/树套树