方法1:
由于安全原因,Android团队决定弃用getExternalStorageDirectory
,但他们没有很好地解决很多问题。
对于这个问题,我没有找到任何合适的答案。无论如何,下面是一种使用已弃用方法的解决方法。
var uri = Uri.parse("content://com.mi.android.globalFileexplorer.myprovider/external_files/KannadaGeeta/11CHAPTER10.mp3")
var vidPath = uri.path
vidPath = vidPath?.replace("external_files",Environment.getExternalStorageDirectory().toString())
val file = File(vidPath)
if (file.exists()) {
println("log yes $file")
} else {
println("log no $file")
}
这个可以正常工作,但由于方法已被弃用,使用它取决于您自己的选择。
方法2:另一种方法是使用ACTION_OPEN_DOCUMENT,然后在onActivityResult中添加。
val contentResolver = applicationContext.contentResolver
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(selectedVideoUri!!, takeFlags)
然后,最终使用未过期的“内容URI”,可以检查文件是否存在。
DocumentFile.fromSingleUri(Uri.parse(contentUriStringfromdatabase)).exists()
file
时,我会得到/external_files/KannadaGeeta/11CHAPTER10.mp3
,它总是返回false。 - Vikas Acharya