getExternalFilesDir对应的目录是/sdcard/Android/data/包名/files/...
可以看到它主要是用来存放应用私有的一些文件。这个目录有几个特性:
自动删除
当应用卸载的时候,这些文件会被删除。当然前提是sd卡可用。
其他应用访问
这些文件可以被其他应用访问,但是前提是其他应用有外部存储权限。
但是注意在Android 11以后即使有存储权限,其他应用也不允许访问这些文件了。
存储权限
在Android api 19(即4.4)之后,本应用即使没有存储权限,也可以访问这些文件,虽然它们是在sd卡上。官方文档如下:
Starting in {@link android.os.Build.VERSION_CODES#KITKAT}, no permissions are required to read or write to the returned path; it's always accessible to the calling app. This only applies to paths generated for package name of the calling application. To access paths belonging to other packages,
鉴于目前大部分App的minSdkVersion都是19或以上,所以当使用这个目录的时候,是没必要再请求存储权限的。