developer.android.google.cn/preview/pri…android
存储访问框架:developer.android.google.cn/guide/topic…shell
FileProvider:developer.android.google.cn/training/se…app
要在 Android Q 测试版 1 中启用此行为变动,请在终端窗口中执行如下命令:框架
adb shell sm set-isolated-storage on
ide
查看是否已生效测试
adb shell getprop sys.isolated_storage_snapshot
ui
测试您的应用时,您能够经过在终端窗口中运行如下命令来为外部文件存储访问权限启用兼容性模式:google
adb shell cmd appops set your-package-name android:legacy_storage allow
code
停用兼容性模式,请在 Android Q 上卸载而后从新安装您的应用,或在终端窗口中运行如下命令get
adb shell cmd appops set your-package-name android:legacy_storage default
developer.android.google.cn/preview/pri…
私有文件沙盒
媒体文件共享集合
照片访问
跨应用文件 读取和存储跨应用文件
Google 把 Android Q 上会被沙箱化条件设为 Target SDK 至少为 Q (29) 的应用或者运行 Android Q 时全新安装的应用。不符合这个条件的应用将会运行在兼容模式下,在兼容模式中应用行为大体和过去相同,以保证不会出现严重的数据丢失问题。兼容模式在应用从新安装后会被关闭。
注意:即便应用Target SDK < 29也会被沙箱化
沙箱化后,沙箱目录:/sdcard/Android/sandbox/packagename/,应用不能再经过 Java File API 来互相访问内部存储文件数据,应用访问 “/sdcard” 实质上访问的是你的应用的沙箱目录,能够理解为“存储重定向”; getExternalStoragePublicDirectory(),getExternalStorageDirectory(),/storage/emulated/0 都会直接映射到沙箱目录;访问这些文件路径存在自动映射,所以正常直接使用理论上都是没问题的。
可能存储数据丢失:当用户手机从Android Q如下版本升级到Android Q版本的时候,应用访问不了以前保存在/sdcard下面的内容
沙箱空间跟过去的内部存储空间内 “Android/data/packagename” 的文件夹同样,会在应用卸载时被永久清除没法恢复,所以好比一些用户主动下载保存的文件当然不能存在沙箱空间,须要存到沙箱外面
sdcard
getExternalStorageDirectory
getExternalStoragePublicDirectory
/emulated/0