Flutter中的存储许可

时间:2019-01-23 07:27:50

标签: permissions flutter

我试图在该类的initstate()函数中获得存储许可。我使用了两个软件包-Simple_PermissionsPermission软件包。但是两者都给了我同样的错误。

仅供参考-我已经在清单中添加了许可。

  

“ E / SimplePermission(6405):设置为从不询问android.permission.WRITE_EXTERNAL_STORAGE   I / SimplePermission(6405):正在请求权限状态:4   I / flutter(6405):权限请求结果为PermissionStatus.deniedNeverAsk“

据此我了解到,如果用户将权限设置为“不再询问”,则应该发生此错误。但这是我第一次在应用中请求存储权限。

我尝试过的事情:

  1. 卸载并重新安装该应用程序。
  2. 使用2个不同的权限包
  3. 在不同的Android版本,不同的模拟器上运行应用程序。

也:
我在我的应用程序中请求2个权限,一个用于位置,另一个用于写存储。

当我进入设置->已安装的应用程序->权限-> 时,我可以看到位置许可,并且可以打开/关闭它。但是我看不到存储权限。

3 个答案:

答案 0 :(得分:2)

您是否已将以下代码添加到android清单文件中?

uses-permission android:name =“ android.permission.WRITE_EXTERNAL_STORAGE”

答案 1 :(得分:1)

使用permission_handler软件包访问存储的另一种方式

dependencies:
  permission_handler: ^5.0.1

代码段

status.isUndetermined用于确定我们是否已请求许可。

          var status = await Permission.storage.status;
           if (status.isUndetermined) {
                // You can request multiple permissions at once.
                Map<Permission, PermissionStatus> statuses = await [
                  Permission.storage,
                  Permission.camera,
                ].request();
                print(statuses[Permission.storage]); // it should print PermissionStatus.granted
              }

注意:请不要忘记在AndroidMenifest(适用于android)和info.plist(适用于iOS)中添加权限。

答案 2 :(得分:0)

这可能是由于另一个插件在AndroidManifest.xml的WRITE_EXTERNAL_STORAGE声明中设置了android:maxSdkVersion属性而导致的:尝试将AndroidManifest.xml中的行替换为:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:remove="android:maxSdkVersion"/>

这为我解决了这个问题。