我有一些问题,获得权限的外部存储在android设备与Flutter。
当我尝试在我的外部存储中创建一个目录时,我得到了这个错误(我只是为了这个例子而改变了目录。在我自己的项目中,目录名是不同的):
I/flutter (12727): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter (12727): The following FileSystemException was thrown while handling a gesture:
I/flutter (12727): Creation failed, path = '/storage/emulated/0/com.domain.bundle' (OS Error: Permission denied,
I/flutter (12727): errno = 13)
I/flutter (12727):
我已经加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
到清单文件并重建整个项目。我还可以尝试什么?
此外,仅列出外部存储中的所有文件也会产生相同的权限错误。
希望听到!
9条答案
按热度按时间mwyxok5s1#
除了需要将
WRITE_EXTERNAL_STORAGE
和READ_EXTERNAL_STORAGE
添加到android/app/src/main/AndroidManifest.xml
之外您还需要运行时请求权限,使用simple_permissions包:
注意事项:
1.* * 第一次**运行
SimplePermissions.requestPermission
时,app会弹出一个窗口,必须点击ALLOW
:给予许可
1.如果你已经点击了
DENY
,然后卸载调试应用程序并重新调试它来安装和修复这个-〉触发弹出窗口,给予你有机会点击ALLOW
。ioekq8ef2#
在Android Q中,此错误将通过在AndroidManifest文件中添加以下行来解决:
e5nszbig3#
请使用package permission_handler来请求权限。
https://pub.dev/packages/permission_handler
https://github.com/BaseflowIT/flutter-permission-handler
模拟器的结果看起来像这样:
ozxc1zmp4#
对于Android 6.0及更高版本,如果应用具有需要Dangerous权限(危险权限列表)的功能,则必须明确询问权限(请查看图片here)
您添加了对Manifest文件的权限,这还不够,您还需要为您的权限实现运行时请求。
我检查了Flutter仓库,似乎他们正在为此开发一个插件。这里是their discussion。
qco9c6ql5#
可能的解决方案:
我也得到了同样的错误(在Android 10设备),即使在添加权限后
然后我,从设备上手动卸载Flutter应用程序,
并重新运行。
注意:安装完成后,请确保在应用设置中允许存储权限。
在挣扎了几个小时之后,它对我有效(我不知道为什么这个解决方案有效)
6tqwzwtp6#
可以这样使用permission_handler包提供的运行时请求权限:
和要确保授予正确的权限,请使用以下示例代码:
7eumitmz7#
你们只需要加上媒体许可
只需将这些文件添加到manifest内部,外部权限对于旧版本的Android具有。
sy5wg1nm8#
在我的情况下,我使用file_picker只是从file_picker更改插件的版本:^4.6.1到file_picker:5.2.6,工作正常。
fcipmucu9#
首先你需要把这个放在你的
android/app/src/main/AndroidManifest.xml
然后将permission_handler包添加到项目Permission_handler - pub.dev
在你的代码中,你可以这样做: