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

Android语音识别在高版本系统提示网络未连接问题排查

语音识别在Android 7.0/5.x显示“Network not connected”的排查方案

嘿,这个问题我之前帮朋友排查过类似的情况,咱们一步步拆解可能的原因,逐个验证:

1. 明文HTTP请求被拦截(API 24+核心原因)

从Android 7.0(API 24)开始,系统默认阻止明文HTTP网络请求,如果你的语音识别服务依赖的是HTTP接口而非HTTPS,哪怕设备有网,也会被系统拦截,进而弹出误导性的“网络未连接”提示。

解决办法:

  • 优先把语音识别服务的接口升级为HTTPS;
  • 若暂时无法升级,可配置网络安全策略允许明文请求:
    在res/xml目录下创建network_security_config.xml文件:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    
    然后在Manifest的<application>标签中引用该配置:
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config">
    

2. 动态权限申请遗漏(API 23+必查)

Android 6.0(API 23)开始,RECORD_AUDIO属于危险权限,必须在代码中动态申请,仅在Manifest中声明是不够的。如果没有获得录音权限,语音识别服务可能无法正常初始化,进而抛出网络相关的错误提示。

检查并添加动态权限申请代码:

private static final int REQUEST_RECORD_AUDIO = 100;

// 在使用语音识别前调用
private void checkRecordPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) 
        != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, 
            new String[]{Manifest.permission.RECORD_AUDIO}, 
            REQUEST_RECORD_AUDIO);
    }
}

// 处理权限申请结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_RECORD_AUDIO) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 权限已授予,启动语音识别
        } else {
            // 提示用户需要录音权限才能使用功能
        }
    }
}

3. 系统内置语音识别服务兼容性问题

部分国内ROM会替换Google的默认语音识别服务,厂商自研的服务可能存在网络适配问题,或者需要登录厂商账号才能正常使用。

可以尝试强制指定使用Google的语音识别服务,在创建识别Intent时添加包名限制:

Intent speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// 指定使用Google的语音识别服务
speechIntent.setPackage("com.google.android.googlequicksearchbox");
startActivityForResult(speechIntent, REQUEST_SPEECH_RECOGNITION);

如果这样能正常工作,说明厂商内置的服务存在兼容性问题。

4. 隐性网络环境问题

设备显示有网络,但可能存在代理、VPN或DNS解析异常:

  • 检查手机设置是否开启了全局代理,尝试关闭后再测试;
  • 若你的APP需要绕过代理,可在代码中添加代理清除逻辑:
    // 清除HTTP/HTTPS代理设置
    System.setProperty("http.proxyHost", "");
    System.setProperty("http.proxyPort", "");
    System.setProperty("https.proxyHost", "");
    System.setProperty("https.proxyPort", "");
    

5. Manifest权限完整性检查

最后再确认Manifest中是否包含所有必要权限:

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

确保这三个权限都已正确声明,没有遗漏。

内容的提问来源于stack exchange,提问作者Algirdas Žarkaitis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:03:09