flutter如何解决permissions_handler报错"no permissions found in manifest for"
我在使用Flutter的permissions_handler插件时遇到了报错:“no permissions found in manifest for”。已经在AndroidManifest.xml中添加了需要的权限声明,但应用运行时仍然提示找不到权限。请问该如何解决这个问题?是否需要额外配置gradle文件或其他设置?
2 回复
在AndroidManifest.xml中添加所需权限,例如:
<uses-permission android:name="android.permission.CAMERA" />
确保权限名称与代码中请求的一致。
更多关于flutter如何解决permissions_handler报错"no permissions found in manifest for"的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用permissions_handler时遇到"no permissions found in manifest"错误,是因为Android清单文件中缺少相应的权限声明。以下是解决方案:
1. 添加权限到Android清单文件
打开 android/app/src/main/AndroidManifest.xml 文件,在 <manifest> 标签内添加所需权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourcompany.yourapp">
<!-- 根据需要的权限添加以下声明 -->
<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 位置权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 其他常用权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<application>
<!-- 你的应用配置 -->
</application>
</manifest>
2. 针对Android 13+的适配
对于Android 13及以上版本,某些权限需要更细粒度的声明:
<!-- Android 13 新增的媒体权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- 附近WiFi设备权限 -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" />
3. 清理和重新构建
添加权限后,执行以下命令:
flutter clean
flutter pub get
flutter run
4. 代码中权限请求示例
import 'package:permission_handler/permission_handler.dart';
// 请求单个权限
Future<void> requestPermission() async {
final status = await Permission.camera.request();
if (status.isGranted) {
// 权限已授予
} else {
// 权限被拒绝
}
}
// 请求多个权限
Future<void> requestMultiplePermissions() async {
Map<Permission, PermissionStatus> statuses = await [
Permission.location,
Permission.camera,
Permission.microphone,
].request();
}
关键点:
- 确保添加的权限与代码中请求的权限一致
- 检查权限名称拼写是否正确
- 对于Android 10+,某些权限需要动态请求
- 如果使用特定功能权限(如蓝牙、通知等),也需要相应声明
完成这些步骤后,错误应该会解决。

