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

Flutter中如何请求通知权限?适配Android 33及以下版本

请求Android通知权限的实现方案

针对Android 13(API 33+)的通知权限请求

Android 13及以上版本要求手动申请通知权限,使用permission_handler插件可以实现弹窗请求,步骤如下:

  1. 配置AndroidManifest.xml
    在android/app/src/main/AndroidManifest.xml中添加权限声明:

    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    
  2. Dart代码中请求权限
    调用permission_handler的Permission.notification发起请求:

    import 'package:permission_handler/permission_handler.dart';
    
    Future<void> requestNotificationPermission() async {
      final PermissionStatus status = await Permission.notification.request();
      switch (status) {
        case PermissionStatus.granted:
          // 权限已授予,执行通知相关逻辑
          break;
        case PermissionStatus.denied:
          // 权限被拒绝,可提示用户授权
          break;
        case PermissionStatus.permanentlyDenied:
          // 权限被永久拒绝,引导用户跳转到应用设置页开启
          await openAppSettings();
          break;
        default:
          break;
      }
    }
    

关于无弹窗的常见原因

  • API低于33的设备:通知权限默认开启,调用request()不会弹出弹窗,直接返回granted状态
  • API 33+设备无弹窗:检查是否已添加POST_NOTIFICATIONS权限;若用户之前拒绝过权限,再次调用request()不会触发弹窗,需引导到设置页开启

补充蓝牙权限的处理

蓝牙权限在不同Android版本有差异,需按需声明对应权限(如BLUETOOTH_SCAN、BLUETOOTH_CONNECT),同样通过permission_handler的对应Permission枚举请求,例如:

await Permission.bluetoothConnect.request();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:54:24