Удаление файла mp3 не работает
Есть способ удаления файла. На Android 10 и меньше не тестировал, но знаю, что на Android 11 и выше для удаления файла нужно запросить подтверждение через системный диалог подтверждения удаления. У меня это настроено так:
fun deleteAudio(index: Int) {
pendingDeleteIndex = index
showDeleteDialog = true
}
if (showDeleteDialog && pendingDeleteIndex >= 0) {
val uri = audioList[pendingDeleteIndex].uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
try {
val pendingIntent = MediaStore.createDeleteRequest(
context.contentResolver,
listOf(uri)
).intentSender
deleteLauncher.launch(
IntentSenderRequest.Builder(pendingIntent).build()
)
} catch (e: IntentSender.SendIntentException) {
errorMessage = "Ошибка при попытке удалить файл: ${e.localizedMessage}"
}
} else {
try {
// до Android 11
val rows = context.contentResolver.delete(uri, null, null)
if (rows > 0) {
onFileDeleted(pendingDeleteIndex)
} else {
Toast.makeText(context, "Удаление не удалось", Toast.LENGTH_LONG).show()
errorMessage = "Удаление не удалось"
}
} catch (e: Exception) {
errorMessage = "Ошибка при удалении: ${e.localizedMessage}"
}
showDeleteDialog = false
pendingDeleteIndex = -1
}
}
но при нажатии на кнопку удаления:
IconButton(onClick = { deleteAudio(index) }) { Icon(imageVector = Icons.Default.Delete, contentDescription = "Удалить") }
Приложение тупо вылетает или вызывает ошибку: Ошибка при удалении: com... has no access to content://media/... . Подскажите пожалуйста, как получить доступ для удаления файла?
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />