使用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; }
解决方法
修正权限类型
Android 13(API 33)起,RECORD_AUDIO权限对应permission_handler中的Permission.microphone,而非Permission.audio。Permission.audio在API 33+对应的是媒体音频访问权限,和录制功能无关,这是报错的核心原因。调整权限请求逻辑
原代码的条件判断存在逻辑错误,修改后的正确代码如下:
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;
精简Manifest权限
targetSdk为33时,flutter_sound默认将录制文件存储在应用私有目录,无需WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,可直接移除这两项配置,减少不必要的权限申请。重建项目确保生效
修改配置后,执行以下步骤:
- 运行
flutter clean清理缓存 - 卸载设备上的旧应用
- 重新执行
flutter run
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

