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

使用flutter_sms_inbox读取Android短信遇权限拒绝错误求助

解决Flutter读取Android短信权限拒绝问题

1. 添加静态权限声明

在android/app/src/main/AndroidManifest.xml的<manifest>标签内添加读取短信的权限:

<uses-permission android:name="android.permission.READ_SMS" />

2. 引入权限处理依赖

在pubspec.yaml中添加permission_handler库(用于动态申请权限):

dependencies:
  flutter:
    sdk: flutter
  flutter_sms_inbox: ^1.0.3
  permission_handler: ^10.2.0 # 可替换为最新稳定版

执行flutter pub get安装依赖。

3. 修改代码,先申请权限再读取短信

修改你的刷新按钮逻辑,先检查并申请READ_SMS权限,通过后再调用短信读取方法:

import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_sms_inbox/flutter_sms_inbox.dart';

// 刷新短信的方法
Future<void> refreshSms() async {
  // 检查权限状态
  final status = await Permission.sms.status;
  if (!status.isGranted) {
    // 申请权限
    final result = await Permission.sms.request();
    if (result.isDenied) {
      // 权限被拒绝,可添加Toast或弹窗提示用户开启权限
      return;
    }
  }

  // 权限已授予,读取短信
  final SmsQuery query = SmsQuery();
  final messages = await query.getAllSms;
  // 处理获取到的短信数据,更新UI
}

额外说明

  • Android 6.0(API 23)及以上系统要求危险权限必须动态申请,仅静态声明无法生效,这是你遇到权限拒绝的核心原因。
  • 若出现grantUriPermission()相关提示,确保通过flutter_sms_inbox提供的标准方法读取短信,避免直接操作Content URI,无需额外配置该权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:54:52