Метод 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)
Затем, наконец, с content uri
, срок действия которого не истек, вы можете проверить наличие файла.
DocumentFile.fromSingleUri(Uri.parse(contentUriStringfromdatabase)).exists()