You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移旧Android项目遇com.google.android.voicesearch.DetailsReceiver缺失问题

问题解决方法

1. 移除com.google.android.voicesearch.DetailsReceiver相关清单配置

com.google.android.voicesearch包已被Google废弃并下架,不存在官方替代包,直接删除AndroidManifest.xml中引用该类的所有代码即可:

  • 删除包含android:name="com.google.android.voicesearch.DetailsReceiver"的<receiver>标签
  • 删除与之关联的<intent-filter>(如果是针对语音搜索相关的过滤规则)

删除后,Manifest的错误会直接消失,这个旧组件是早期语音搜索的遗留代码,当前Android版本已不再依赖。

2. 解决RecognizerIntent.ACTION_RECOGNIZE_SPEECH无法找到的问题

兼容性检查

Android 11及以上版本,调用语音识别前必须先通过PackageManager确认是否有可用的识别组件,避免找不到的情况:

PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(
    new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() == 0) {
    // 无可用语音识别组件,提示用户安装或使用替代方案
}

官方替代方案

如果系统默认语音识别不可用,推荐使用Google ML Kit语音识别,这是Google官方维护的现代语音识别解决方案,支持Android 6.0(API 23)及以上版本,无需依赖已下架的旧包:

  1. 在build.gradle(Module)中添加依赖:
dependencies {
    implementation 'com.google.mlkit:speech-recognition:17.0.0'
}
  1. 使用ML Kit进行语音识别的核心代码示例:
// 初始化语音识别器
SpeechRecognizer recognizer = SpeechRecognizer.create(
    new SpeechRecognizerOptions.Builder()
        .setLanguage("zh-CN") // 设置识别语言
        .build());

// 设置识别回调
recognizer.addListener(new RecognitionListener() {
    @Override
    public void onResults(@NonNull RecognitionResults results) {
        String recognizedText = results.getTranscript();
        // 处理识别结果
    }

    @Override
    public void onError(@NonNull RecognitionError error) {
        // 处理识别错误
    }

    // 实现其他回调方法(如onPartialResults等)
});

// 开始识别(需要RECORD_AUDIO权限)
recognizer.startListening();

权限说明

无论使用系统语音识别还是ML Kit,都需要在Manifest中添加录音权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Android 6.0及以上版本还需要动态申请该权限。


内容的提问来源于stack exchange,提问作者WebViewer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:01:05