xingda920813
2019-04-04 21:04:52 +08:00
这个改变总体上我认为有 3 点欠考虑的地方:
1, 对于第三方文件管理器, SAF 提供的 API 过于有限 (尽管有 OPEN_DOCUMENT_TREE), 无法让全功能的文件管理器 (如 Root Explorer, Total Commander, Solid Explorer 等) 改造后继续像以前版本一样工作; 备份管理器等工具应用也会受重创;
(系统自带的"文件"使用了 MANAGE_DOCUMENTS 等签名级别的权限, 非普通 App 可获取)
2, SAF 需使用 ContentProvider API, 需要进行 Binder 通信, 相比 File API 性能上存在劣势;
3, SAF 不在 NDK 中, 不能在 native 代码 (C/C++) 中访问;
我认为最好的是把非沙盒化的存储权限 (以前版本中的 WRITE_EXTERNAL_STORAGE) 做成一个特殊权限, 路径在"设置"->"应用"->扩展菜单->"特殊访问权限"->存储 (例), 像设备管理器权限一样, 但不提供 Intent 跳转, 用户只能手动去设置一级一级进入. 这样引导用户操作的成本会很高, 可阻止普通的非工具类应用滥用或强制索取;
或者在 Google Play 中上架为工具类应用的 App 才可申请 STORAGE 权限.