INJECT_EVENTS权限与输入法的全屏手写

1,今天发现三星中文输入法和搜狗、讯飞等三方输入法的一点关于全屏手写的区别,就是在全屏手写的情况下,使用三星输入法,第一次点击屏幕,手机可以识别用户
的点击事件,而三方的输入法,第一次点击屏幕,是将输入法隐藏,第二次点击才产生点击效果。
2,仔细分析了一下原因,区别在于三星中文输入法有<uses-permission android:name="android.permission.INJECT_EVENTS" />这一项权限,而其他的三方输入法没有。
该项权限的解释:允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows an application to inject user 
events (keys, touch, trackball) into the event stream and deliver them to ANY window.)
3,从解释中,我们可以猜测到,比如在打开全屏手写的情况下,点击另外一个editText,三星中文输入法可以将这个点击事件传递给那个editText,所以点击有效,而三
方的输入法无法获取到这项系统级权限,所以无法做到,只能再点击后隐藏输入法,在用户第二次点击时才产生效果
另,在三星中文输入法中,还有另外一项系统级权限:android.permission.INTERNAL_SYSTEM_WINDOW,解释为内部系统窗口,允许程序打开内部窗口,不对第三方应用程序开放此权限,具体对此权限的运用还没有搞清楚,发现后会补上
 

猜你喜欢

转载自blog.csdn.net/u011938614/article/details/44145203