我正在制作一种特定类型的照片编辑器,旨在编辑照片中的内容。由于其本质,从用户体验的角度来看,就地编辑照片而不是保存用户需要注意的副本(他们可能会错误地将未编辑的原始照片发送给某人,因为他们可能不会仅从缩略图中看到它没有经过编辑)。此外,并非所有图库应用程序默认都会索引外部应用程序文件夹,因此编辑后的图像甚至可能不会出现。
作为回报,我的照片编辑器会:
我一直在尝试 Android 的
PickVisualMediaRequest
本机选择器,但它不提供写入访问权限。我还尝试为我的活动中的图像创建一个 Intent.ACTION_EDIT
过滤器(例如可以通过 Google Photos 启动),并且当它通过 Google Photos 的内容提供商时,提供的 URI 似乎不可写。
现代 Android 版本上可用的哪些文件选择方法可以解决我的问题?请注意,我不需要也不想要完整的外部存储访问权限,我同意用户必须使用处理的系统选择器来选择文件所有权限的东西,但我需要写权限。如果用户在 90% 的情况下都必须手动删除原始文件(而且他们没有明确要求保留原始文件),那么我的应用程序使用起来会很痛苦。例如,Google Photos 能够对图库图像进行破坏性更改。
存储访问框架提供了启动授予读写权限的系统文件选择器的功能:https://developer.android.com/training/data-storage/shared/documents-files#open-file
但是,据我所知,无法将只读 URI 升级为可写 URI,因此只有从应用程序本身启动文件选择器(不使用
)才能实现就地编辑Intent.ACTION_EDIT
意图过滤器,必然会提供副本)。