如何使用内容uri检查文件是否存在



我有一个音频文件的内容uri,它是从选择器的意图中获得的。

content://com.mi.android.globalFileexplorer.myprovider/external_files/KannadaGeeta/11CHAPTER10.mp3

我刚刚在数据库中保存了上面的uri。

现在,当用户再次打开我的应用程序时。我需要通知他他选择的最后一个mp3文件是否存在。如果存在,那么只有我必须允许他继续,否则我需要通知再次下载文件。

但我完全停留在这里,我不知道如何检查文件的内容uri是否存在。

请帮我解决我的问题。

方法1:-好的,因为安卓团队出于安全原因决定弃用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则在CCD_ 3中必须添加

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()
File file = new File(URI.create("your uri").getPath());
if (file.exists()) {
//Do something`enter code here`
}

你还需要许可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

最新更新