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+,某些权限需要动态请求
  • 如果使用特定功能权限(如蓝牙、通知等),也需要相应声明

完成这些步骤后,错误应该会解决。

回到顶部