如何使用内容uri检查文件是否存在
how to check whether file exists or not using content uri
我有一个音频文件的内容 uri,它是我从选择器意图中获得的。
content://com.mi.android.globalFileexplorer.myprovider/external_files/KannadaGeeta/11CHAPTER10.mp3
我刚刚将上面的 uri 保存在数据库中。
现在,当用户再次打开我的应用程序时。我需要通知他他选择的最后一个 mp3 文件是否存在。如果存在那么只有我必须让他继续否则我需要通知重新下载文件。
但我完全卡在这里了,我不知道如何使用其内容 uri 检查文件是否存在。
请帮助我解决问题。
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" />
方法一:-
好的,由于 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")
}
这会工作正常,但由于已弃用的方法,因此留给您使用。
方法二:-
另一种方法是使用 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()
我有一个音频文件的内容 uri,它是我从选择器意图中获得的。
content://com.mi.android.globalFileexplorer.myprovider/external_files/KannadaGeeta/11CHAPTER10.mp3
我刚刚将上面的 uri 保存在数据库中。
现在,当用户再次打开我的应用程序时。我需要通知他他选择的最后一个 mp3 文件是否存在。如果存在那么只有我必须让他继续否则我需要通知重新下载文件。
但我完全卡在这里了,我不知道如何使用其内容 uri 检查文件是否存在。
请帮助我解决问题。
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" />
方法一:-
好的,由于 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")
}
这会工作正常,但由于已弃用的方法,因此留给您使用。
方法二:-
另一种方法是使用 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()