Flutter 应用程序中存储权限不起作用

问题描述 投票:0回答:1

我正在开发一个需要存储权限的 Flutter 应用程序。我正在使用 Permission_handler 包来请求这些权限。但是,当我尝试请求存储权限时,应用程序会将我定向到显示“无需权限”的设置页面,即使我已在 AndroidManifest.xml 文件中声明了权限。

代码:这是我的主要 Dart 代码:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            PermissionStatus storagePermission =
                await Permission.storage.request();
            if (storagePermission == PermissionStatus.granted) {
              print("granted");
            }
            if (storagePermission == PermissionStatus.denied) {
              print("permission denied");
            }
            if (storagePermission == PermissionStatus.permanentlyDenied) {
              openAppSettings();
            }
          },
          child: Text('Ask Permission'),
        ),
      ),
    );
  }
}

这是我在 AndroidManifest.xml 中声明的权限:

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

我尝试过的:

我已确保正确导入了permission_handler包。 我已经多次运行 flutter clean 和 flutter pub get 。 我遵循了几个 YouTube 教程,但没有一个能解决问题。 我什至从头开始创建了一个新项目,看看问题是否仍然存在。 预期行为:我希望当我单击“请求权限”按钮时,应用程序应该请求存储权限。

实际行为:应用程序没有请求权限,而是将我重定向到显示“无需权限”的设置页面

设置页面

android flutter flutter-dependencies storage mobile-development
1个回答
0
投票

当存储权限被永久拒绝时,应用程序会将用户引导至设置页面:

if (storagePermission == PermissionStatus.permanentlyDenied) {
  openAppSettings();
}

如果用户多次拒绝权限,权限状态将变为“永久拒绝”。此时,用户必须从应用程序的设置页面手动启用该权限。

If you remove the openAppSettings() line, the app won't be able to navigate to the settings page when the permission is denied.

请注意,如果用户多次取消权限请求,将不再显示权限对话框。但是,重新安装应用程序将重置权限状态,从而允许再次出现该对话框。

© www.soinside.com 2019 - 2024. All rights reserved.