asysbang

 找回密码
 立即注册
查看: 3147|回复: 0
打印 上一主题 下一主题

屏蔽百度输入法语音输入

[复制链接]

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-9-3 14:13:29 |只看该作者 |倒序浏览
#需求
```
因为合作方的输入法上有语音输入按钮,但是合作方不提供修改,就需要系统进行屏蔽
```


#分析
```
1.监听输入法界面弹出
2.屏蔽点击事件
3.需要判断键盘高度来确定按钮位置(拼音和应为的键盘高度不一样)
4.(难点)拼音输入法会弹出被选词(candidateview),出现时会和按钮重合,这个时候就不应该屏蔽按钮的点击事件
```


#过程
```
前3个问题都比较好搞定,只要加log跟踪代码逻辑就可以
第4个麻烦在于整个candidateview 是通过ondraw函数里面绘制的
原始的apk是进过混淆的,即使反编译之后也很难找到关键因素
这里有个很巧妙的方式,那就是反射getDeclaredFields   然后打印每个属性的值,当然会有二级类,这个运气很好只用一层就找到了关键的属性
“com.baidu.mx”  类中的 “bax”这个变量里面保存了candidate的个数,所以只要在inputmethodservice里面拿到这个size,在点击时做判断就可以了
```

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2026-1-29 03:41 , Processed in 0.042257 second(s), 19 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部