首页 > 解决方案 > 图像选择器权限Android颤动

问题描述

在最近关于数据保护页面的帖子中,Android/playstore 明确表示,如果您从需要征得许可的设备拍摄图像/视频。

至少声明以下权限之一:READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE

现在颤振图像选择器

无需配置 - 插件应该开箱即用。

如果我明确要求许可,应用程序没有响应许可意味着不调用我应该做什么。 Flutter 图像选择器明确请求许可 我只选择图像。然后将其上传到firebase。

标签: androidflutter

解决方案


在运行 Android 4.4(API 级别 19)及更高版本的设备上,您的应用可以使用存储访问框架与文档提供程序进行交互,包括外部存储卷和基于云的存储。此框架允许用户与系统选择器交互以选择文档提供程序并选择特定文档和其他文件供您的应用程序打开。

由于用户参与选择您的应用程序可以访问的文件或目录,因此该机制不需要任何系统权限[READ,WRITE Permission],并且增强了用户控制和隐私。此外,这些文件存储在应用程序特定目录之外和媒体商店之外,在您的应用程序卸载后仍保留在设备上。

注意:但是,如果您的应用使用媒体商店,您必须请求 READ_EXTERNAL_STORAGE 权限才能访问其他应用的媒体文件。


在上述情况下(图像选择器),用于ACTION_GET_CONTENT打开文件,它使用 SAF 框架打开系统文档选择器,不需要权限。

谈论数据保护- 打开文件时使用ACTION_GET_CONTENT- 因为用户参与选择您的应用程序可以访问的文件或目录。应用程序只能访问用户选择的图像的 URI,并且无法自动执行图像选择过程,因此用户图像不会以任何方式更改,并且在您的应用程序卸载后保留在设备上。

图像选择器将结果 URI 从文档选择器复制到应用程序的临时缓存中,从那里将图像上传到 firebase(或您需要图像的任何其他地方) - 请参阅此答案以查看它如何选择图像 -颤振图像选择器

由于这是 google 提供的官方方式 -在这里解释,应用程序不应对用户隐私造成任何安全威胁

此外,如果您愿意(我几乎不觉得需要),您可以显示权限声明对话框,说明应用程序将导航到文件选择器并将临时副本保存在应用程序缓存中,而不以任何方式更改原始图像(或类似的东西你觉得对)。


推荐阅读