我正在实施FileProvider。
它比普通的优点ContentProvider
是更高的安全性:
content://
Uri
通过为文件而不是为文件创建安全共享与应用程序关联的文件file:///
Uri
- 内容 URI 允许使用临时访问权限授予读写访问权限
所以要点之一是客户端应用程序不应该知道访问数据的真实文件路径。
对于大多数客户端应用程序来说,在它们开始读取实际数据之前了解human-friendly name of file
和/或非常重要。size of the file
这些应用程序通过query() 方法FileProvider
询问名称/大小。该方法只需要参数中的 2 个选项- OpenableColumns ( , )。projection
_display_name
_size
现在的问题。一些客户端应用程序正在_data
进入投影,期望获得数据的真实完整路径。FileProvider
但是出于安全原因,返回一个真实的文件路径会破坏使用的整个想法。
我的问题是“我错过了什么吗?”。只是一些客户端应用程序写得不好,所以他们的问题是因为没有获取文件路径而崩溃?