我正在尝试构建一个简单的图库,以显示某个目录downloads/mCustomDir
中的所有图像。
但是,即使我没有尝试访问此自定义目录,也没有尝试访问常规下载目录,即使我知道那里有文件,我也没有找回文件。 在过去的几个月中,访问存储的方式似乎发生了很多变化,并且许多东西都已弃用,因此我很难理解如何正确访问这些文件。
这是我的功能:
private fun loadSavedImages(dir: File?) {
if (dir != null) {
if (dir.exists()) {
val files = dir.listFiles()
if (files != null) {
val allPhotos = mutableListOf<File>()
Log.d("filesListSize", files.size.toString())
for (file in files) {
val absolutePath = file.absolutePath
val extension = absolutePath.substring(absolutePath.lastIndexOf("."))
if (acceptedExtensions.contains(extension)) {
allPhotos.add(file)
}
}
allPhotosViewModel.photosList.postValue(allPhotos)
}
}
}
}
我可以使用onResume
:
override fun onResume() {
super.onResume()
if (hasNoPermissions(this)) {
requestPermission(this, permissions)
} else {
if (isExternalStorageReadable()) {
runOnUiThread {
loadSavedImages(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS))
}
}
}
}
总线日志将继续打印文件数组的大小为0。
当我使用Environment.getExternalStoragePublicDirectory
时,它可以正常工作,但已过时,我希望它以当前的最佳标准构建。