diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt b/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt index b558816..3e9b0cc 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/settingsScreen/SettingsScreen.kt @@ -12,6 +12,7 @@ import android.content.Intent import android.media.RingtoneManager import android.net.Uri import android.os.Build +import android.provider.MediaStore import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes @@ -72,6 +73,7 @@ import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.util.fastCoerceAtLeast import androidx.core.net.toUri import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel @@ -89,6 +91,7 @@ import org.nsh07.pomodoro.ui.theme.TomatoShapeDefaults.topListItemShape import org.nsh07.pomodoro.ui.theme.TomatoTheme import org.nsh07.pomodoro.utils.toColor + @OptIn(ExperimentalMaterial3Api::class) @Composable fun SettingsScreenRoot( @@ -197,9 +200,17 @@ private fun SettingsScreen( val context = LocalContext.current var alarmName by remember { mutableStateOf("") } - LaunchedEffect(Unit) { - alarmName = RingtoneManager.getRingtone(context, alarmSound.toUri()) - ?.getTitle(context) ?: "" + LaunchedEffect(alarmSound) { + val returnCursor = context.contentResolver.query(alarmSound.toUri(), null, null, null, null) + returnCursor?.moveToFirst() + alarmName = + returnCursor + ?.getString( + returnCursor + .getColumnIndex(MediaStore.MediaColumns.TITLE) + .fastCoerceAtLeast(0) + ) ?: "" + returnCursor?.close() } val ringtonePickerLauncher = rememberLauncherForActivityResult(