为知乎图片选择器Matisse适配Android11的分区存储

知乎的Matisse没有适配Android 10和Android 11。Android 10和Android 11启用了分区存储,Android10 在AndroidManifest.xml的Android标签内设置android:requestLegacyExternalStorage="true"后才可以访问沙盒路径下的文件。Android 11已经强制启用分区存储啦,所以需要进行适配。

  • Android10不在AndroidManifest.xml的Android标签内设置android:requestLegacyExternalStorage="true"的话会存在拍照完成后点击勾勾不响应的情况
  • 如果不适配Android 11会出现无法启动系统拍照。

那么现在我们就开始对Matisse Android 11分区存储进行适配吧
1.将Environment.getExternalStorageDirectory()换成Context#getExternalFilesDir(String)(获取到 SDCard/Android/data/你的应用的包名/files/ 目录,卸载应用的时候文件会被删除)
2.修改FileProvider的xml文件,将external-path改为external-files-path



    

path 解释
root-path 设备的根目录new File("/")
files-path context.getFilesDir()
cache-path context.getCacheDir()
external-path Environment.getExternalStorageDirectory()
external-files-path context.getExternalFilesDirs()
external-cache-path context.getExternalCacheDirs()

具体适配见:https://github.com/iamzhangjunhui/Matisse

你可能感兴趣的:(为知乎图片选择器Matisse适配Android11的分区存储)