我试图在该类的initstate()
函数中获得存储许可。我使用了两个软件包-Simple_Permissions
和Permission
软件包。但是两者都给了我同样的错误。
仅供参考-我已经在清单中添加了许可。
“ E / SimplePermission(6405):设置为从不询问android.permission.WRITE_EXTERNAL_STORAGE I / SimplePermission(6405):正在请求权限状态:4 I / flutter(6405):权限请求结果为PermissionStatus.deniedNeverAsk“
据此我了解到,如果用户将权限设置为“不再询问”,则应该发生此错误。但这是我第一次在应用中请求存储权限。
我尝试过的事情:
也:
我在我的应用程序中请求2个权限,一个用于位置,另一个用于写存储。
当我进入设置->已安装的应用程序->权限-> 时,我可以看到位置许可,并且可以打开/关闭它。但是我看不到存储权限。
答案 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"/>
这为我解决了这个问题。