问题描述
我有以下代码来提取所有OPUS
音频文件,并且它对于除一个目录(即WhatsApp Voice Notes
)以外的所有文件都适用。尽管WhatsApp Audio
下的音频文件已成功获取。我缺少访问WhatsApp Voice Notes
中的文件的任何限制/权限吗?
private fun readAllOpusFiles() {
val resolver = this.contentResolver
val uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(MediaStore.Audio.Media._ID,MediaStore.Audio.Media.RELATIVE_PATH,MediaStore.Audio.Media.disPLAY_NAME,MediaStore.Audio.Media.SIZE,MediaStore.Audio.Media.MIME_TYPE,MediaStore.Audio.Media.DATE_MODIFIED)
val cursor = resolver.query(uri,projection,null,null)
if (cursor != null && cursor.movetoFirst()) {
do {
val id = cursor.getColumnIndex(MediaStore.Audio.Media._ID)
val name = cursor.getColumnIndex(MediaStore.Audio.Media.disPLAY_NAME)
var path = cursor.getColumnIndex(MediaStore.Audio.Media.RELATIVE_PATH)
Log.d("File ID: ",cursor.getString(id))
Log.d("File Name: ",cursor.getString(name))
if (cursor.getString(path) != null) {
Log.d("File Path: ",cursor.getString(path))
}
} while (cursor.movetoNext())
}
}
PS:在Android 10及更低版本上,我可以通过在android:requestLegacyExternalStorage="true"
上循环uri
来使用清单中及listFiles
下的file
访问所有文件,
val uri = URI.create("file:///storage/emulated/0/WhatsApp/Media/WhatsApp%20Voice%20Notes")
val file = File(uri)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)