Flutter权限处理程序如果已经被拒绝,则不会重新请求权限

问题描述

我正在尝试访问用户设备的麦克风,我设法成功集成了Permissions_handler软件包。当我单击麦克风图标时,按预期方式弹出请求许可权消息,但是我按了拒绝以处理该情况,但是现在,当我单击麦克风图标时,没有消息弹出,因为我已经拒绝了许可权。我的问题是,如果用户之前未授予用户许可,我该如何重新请求用户许可?这是我的代码:

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';

class InsideLeft extends StatefulWidget {
  @override
  _InsideLeftState createState() => _InsideLeftState();
}

class _InsideLeftState extends State<InsideLeft> {
  @override
  Widget build(BuildContext context) {
    return Container(

      child: GestureDetector(
        child: Icon(Icons.mic),onTap: () async {
          var status = await Permission.microphone.status;
          switch (status) {
            case PermissionStatus.granted:
              print('Granted');
              break;
            case PermissionStatus.denied:
              print('denied');
              await Permission.microphone.request();
              break;
            case PermissionStatus.restricted:
              print('restricted');
              break;
            case PermissionStatus.undetermined:
              print('undetermined');
              break;
            case PermissionStatus.permanentlyDenied:
              print('Permanently denied');
              break;
            default:
          }
        },),);
  }
}

解决方法

here 所述,您无法在 iOS 上再次请求权限,一旦被拒绝。您必须将用户带到“设置”应用,并让他们手动授予您的应用权限。

App Settings 是一个很好的包,尤其是他们的 openAppSettings 方法。

Requesting permission after it was denied

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...