android - 在 android 10/11 (api 29/30) 下是否仍然可以破坏性地修改您不拥有的文件?
问题描述
我想编写一个应用程序来裁剪/调整照片大小并将它们以新大小写回共享存储,但我所读到的关于 SAF 和 mediastore 如何工作的所有内容都表明我充其量只能编写文件用新名字回来。如果我不是原始创建者,在最坏的情况下,我可能根本无法打开这些文件。涉及触发 SAF 对话框以打开文件的解决方案是合理的,尽管我希望能够批量更改文件夹中的所有文件(照片)(比如 dcim)。但是,如果我还必须触发一个 SAF 对话框来写回文件,那就太糟糕了。
显然,如果我要针对 10 之前的 android 版本,这仍然可以完成,但是我会被 playstore 阻止,而且我真的不想编写只有我可以使用的应用程序。
解决方案
我读到的关于 SAF 和 mediastore 如何工作的所有内容都表明,我充其量只能用新名称将文件写回
使用ACTION_OPEN_DOCUMENT
(或ActivityResultContracts.OpenDocument
)。Uri
您对收到的 标识的内容具有完全的读写访问权限。
涉及触发 SAF 对话框以打开文件的解决方案是合理的,尽管我希望能够批量更改文件夹中的所有文件(照片)(比如 dcim)
使用ACTION_OPEN_DOCUMENT_TREE
(或ActivityResultContracts.OpenDocumentTree
)。您对该树中的所有文档具有完全的读写访问权限。
推荐阅读
- r - 在 For 循环 R 中将新列绑定到 DF
- php - php cURL 循环下载一次,然后停止
- c++ - 高级静态多态性
- google-apps-script - 在 Google 表单上执行计算
- sql - 对多列使用连接的累积总和
- python - TensorFlow 优化张量列表
- java - ArrayList 只获取一行,而 ResultSet 读取多于一
- sql-server - TFS 仪表板小部件:查询 TFS_Warehouse 数据库?
- python - 自动完成 ipython 结束方/圆括号
- django - Django-compressor & S3 Boto:静态文件未压缩