首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有一些第三方语音识别器的android.speech.RecognitionService SecurityException

带有一些第三方语音识别器的android.speech.RecognitionService SecurityException
EN

Stack Overflow用户
提问于 2017-12-29 07:58:20
回答 1查看 1.1K关注 0票数 5

我们创建了一个Android应用程序,它使用谷歌语音识别器,我们首先选择在程序中使用谷歌语音识别器。大多数设备工作正常,只有少数设备(MEIZU_M5、U78-E、阿波罗Lite等)。在例外情况下报告。好像和Mediatek的语音有冲突吗?我们发现还有一些Mediatek的设备正常工作。这很让人困惑。

代码语言:javascript
运行
复制
java.lang.SecurityException: Not allowed to bind to service Intent { act=android.speech.RecognitionService cmp=com.mediatek.voicecommand/.service.VoiceWakeupRecognitionService }
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1421)
at android.app.ContextImpl.bindService(ContextImpl.java:1385)
at android.content.ContextWrapper.bindService(ContextWrapper.java:604)
at android.speech.SpeechRecognizer.startListening(SpeechRecognizer.java:287)

要追溯到代码,源代码只显示到ContextWrapper.java。如何让它出现在ContextImpl.java:1421上?

通过防火墙日志,我们发现它发生在许多第三方语音识别器上:

代码语言:javascript
运行
复制
com.mediatek.voicecommand
com.htc.android.voicedictation
com.vlingo.midas
com.iflytek.speechcloud
com.iflytek.speechsuite
...

我们还测试了其他一些第三方语音识别器,运行良好。那些导致异常的语音识别器是否仅用于系统语音命令,而应用程序无法访问?

欢迎任何想法或经验。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 18:49:35

最后,我们从Android开发者服务概览的一些信息中找到了根本原因。

但是,可以在清单文件中将服务声明为私有服务,并阻止来自其他应用程序的访问。

这些第三方SpeechRecognizer服务是私有的,不能被其他应用程序调用。因此,我们只需尝试-捕捉这个异常并通知用户安装Google (语音输入)。或者,只要跳过这些意外的SpeechRecognizer,就可以排除它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48019398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档