原生拨号盘 语音搜索按钮隐藏,点击搜索框退出后语音搜索按钮出现但点击无反应

复现路径

1.点击进入拨号盘,搜索框没有语音搜索按钮

2.点击进入搜索框,然后点击搜索框左上角的返回按钮。

3. 返回后出现了红框中的语音搜索按钮

分析

抓取到控件名为voice_serach_button。

对此控件操作的有两个文件DialetactsActivity.java和SearchEditTextLayout.java.

为什么一开始打开拨号盘,语音搜索按钮隐藏?

DialetactsActivity.java的onResume函数调用prepareVoiceSearchButton:

通过pacakageManager查询,如果有处理android.speech.action.RECONGNIZE_SPEECH的Activity则将语音搜索按钮设置为可见,否则隐藏。

为什么后面语音搜索按钮又出现了?

问题出现在另一个文件SearchEditTextLayout.java里。

当搜索框折叠,展开等操作时,dialactsAcitivity通过ActioinBarContoller控制SearchEditTextLayout中元素的可见性。

核心函数是updateVisisbility。注意,此函数只是判断如果搜索框收起,则显示语音搜索按钮。没有进行是否有Activity可以处理语音识别。所以一点收起刷新搜索框,则会显示隐藏的语音搜索按钮:

修改方法:

参考DialetactsActivity.java,刷新搜索框时判断是否有Activity处理语音识别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值