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

使用flutter_sound录音遇权限错误:No permissions found in manifest for: []33

问题:Flutter Sound录制音频时权限报错:No permissions found in manifest for: []33

我使用flutter_sound录制音频,通过permission_handler请求音频权限时,出现上述错误。以下是我的相关配置和代码:


Android端配置

AndroidManifest文件(路径:android\app\src\main\AndroidManifest.xml)

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

build.gradle配置

defaultConfig {
        applicationId "com.example"
        minSdkVersion flutterMinSdkVersion.toInteger()
        targetSdkVersion flutterTargetSdkVersion.toInteger() // 33 in local.properties
        compileSdkVersion flutterCompileSdkVersion.toInteger() // 33 in local.properties
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

请求权限及录制代码

var status = await Permission.audio.status;
    if (!status.isGranted || !status.isPermanentlyDenied) {
      await Permission.audio.request();
    }

    if (!status.isGranted || !status.isPermanentlyDenied) {
      return false;
    }

    await openRecorderSession();

    if (_recorder != null && isRecordingStopped()) {
      await _recorder?.startRecorder(
        toFile: path,
        codec: Codec.aacMP4,
      );

      return true;
    }

解决方法

  1. 修正权限类型
    Android 13(API 33)起,RECORD_AUDIO权限对应permission_handler中的Permission.microphone,而非Permission.audio。Permission.audio在API 33+对应的是媒体音频访问权限,和录制功能无关,这是报错的核心原因。

  2. 调整权限请求逻辑
    原代码的条件判断存在逻辑错误,修改后的正确代码如下:

var status = await Permission.microphone.status;
// 仅当权限被拒绝时发起请求
if (status.isDenied) {
  status = await Permission.microphone.request();
}

// 权限通过后再执行录制流程
if (status.isGranted) {
  await openRecorderSession();
  if (_recorder != null && isRecordingStopped()) {
    await _recorder?.startRecorder(
      toFile: path,
      codec: Codec.aacMP4,
    );
    return true;
  }
}
return false;
  1. 精简Manifest权限
    targetSdk为33时,flutter_sound默认将录制文件存储在应用私有目录,无需WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,可直接移除这两项配置,减少不必要的权限申请。

  2. 重建项目确保生效
    修改配置后,执行以下步骤:

  • 运行flutter clean清理缓存
  • 卸载设备上的旧应用
  • 重新执行flutter run

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:33