屏蔽输入法界面按钮
需求
因为合作方的输入法上有语音输入按钮,但是合作方不提供修改,就需要系统进行屏蔽
分析
1.监听输入法界面弹出
2.屏蔽点击事件
3.需要判断键盘高度来确定按钮位置(拼音和应为的键盘高度不一样)
4.(难点)拼音输入法会弹出被选词(candidateview),出现时会和按钮重合,这个时候就不应该屏蔽按钮的点击事件
过程
前3个问题都比较好搞定,只要加log跟踪代码逻辑就可以
第4个麻烦在于整个candidateview 是通过ondraw函数里面绘制的
原始的apk是进过混淆的,即使反编译之后也很难找到关键因素
这里有个很巧妙的方式,那就是反射getDeclaredFields然后打印每个属性的值,当然会有二级类,这个运气很好只用一层就找到了关键的属性
“com.baidu.mx”类中的 “bax”这个变量里面保存了candidate的个数,所以只要在inputmethodservice里面拿到这个size,在点击时做判断就可以了
推荐阅读
- 界面展示bug随笔
- 入冬了啊
- 工程中屏蔽CocoaPods里的警告
- ubuntu开机默认进入命令行模式/用户图形界面
- 企业级/B端设计交互/界面规范(二)|企业级/B端设计交互/界面规范(二) 基础原则规范说明
- 家庭群里的对话(我把姨妈屏蔽了……)
- 我看到了讯飞输入法
- python|【Python】自己动手实现一个带界面的自动抠图小程序
- 数据尖兵软件|数据尖兵软件,详细介绍
- SourceTree|SourceTree 教程文档(了解界面)