Flutter Permissions 状态 NotAgain 即使在第一次启动时
Posted
技术标签:
【中文标题】Flutter Permissions 状态 NotAgain 即使在第一次启动时【英文标题】:Flutter Permissions status NotAgain even on first launch 【发布时间】:2019-07-18 00:09:27 【问题描述】:我正在使用permission 插件来检查权限状态并请求它们是否处于deny
状态。但是从第一次开始,手机和存储的权限状态都是notAgain
。因此,我无法请求用户授予phone
和storage
的权限。我也在我的 android 清单文件中指定了它们。
这里是检查和请求权限的代码 sn-p
List<Permissions> permissions = await Permission.getPermissionStatus([PermissionName.Location, PermissionName.Phone, PermissionName.Storage]);
permissions.forEach((permission)
if(permission.permissionStatus.toString().contains('deny') )
neededPermissions.add(permission.permissionName);
);
if(neededPermissions.length > 0)
requestPermissions(neededPermissions);
我不明白为什么他们是notAgain
从第一次启动应用程序开始
【问题讨论】:
你解决了这个问题了吗?我真的需要为了完成我的应用程序......它阻碍了我...... 现在,我正在使用 simple_permissions 插件 (pub.dev/packages/simple_permissions) 通过对该插件代码进行一些更改。它很适合我的需求。 【参考方案1】:我已经编辑了这个答案,希望有人会觉得它有帮助。
万一有人为此苦苦挣扎。这个包permission_handler
提供强大的实用程序来正确处理权限。它最近已更新为包含 isPermanentlyDenied
标志,与 Android 上的“不再询问”相同。
【讨论】:
我不知道为什么这会解决问题......无论如何,getPermissionStatus 不再输出的事实意味着弹出窗口不会出现......至少这就是我的意思结束......但我仍然非常希望解决这个问题。【参考方案2】:也许你的调用请求权限两次,在 initState() 中调用请求权限用于启动请求。
@override
void initState()
super.initState();
requestPermission();
requestPermission() async
final res = await SimplePermissions.requestPermission(
Permission.WriteExternalStorage);
print("permission request result is " + res.toString());
【讨论】:
以上是关于Flutter Permissions 状态 NotAgain 即使在第一次启动时的主要内容,如果未能解决你的问题,请参考以下文章
Flutter MissingPluginException(在通道 flutter.baseflow.com/permissions/methods 上找不到方法 init 的实现)
Flutter IOS:CocoaPods 找不到 pod“simple_permissions”的兼容版本:
Ubuntu 无法连接设备 no permissions (verify udev rules)
Ubuntu 无法连接设备 no permissions (verify udev rules)
Ubuntu 无法连接设备 no permissions (verify udev rules)
错误记录发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)(代