diff --git a/app/src/main/java/at/lockstep/player/ui/pairing/PairingScreen.kt b/app/src/main/java/at/lockstep/player/ui/pairing/PairingScreen.kt index 2b459df..9367f4e 100644 --- a/app/src/main/java/at/lockstep/player/ui/pairing/PairingScreen.kt +++ b/app/src/main/java/at/lockstep/player/ui/pairing/PairingScreen.kt @@ -37,6 +37,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import at.lockstep.jukebox.db.TrackRow import at.lockstep.player.LockstepViewModel import at.lockstep.player.R +import at.lockstep.player.util.SafInitialUris @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -149,7 +150,7 @@ fun PairingScreen( ) { item { Button( - onClick = { openTree.launch(null) }, + onClick = { openTree.launch(SafInitialUris.internalDocuments()) }, modifier = Modifier.fillMaxWidth(), ) { Text(context.getString(R.string.pairing_choose_folder)) diff --git a/app/src/main/java/at/lockstep/player/util/SafInitialUris.kt b/app/src/main/java/at/lockstep/player/util/SafInitialUris.kt new file mode 100644 index 0000000..11b2e21 --- /dev/null +++ b/app/src/main/java/at/lockstep/player/util/SafInitialUris.kt @@ -0,0 +1,15 @@ +package at.lockstep.player.util + +import android.net.Uri +import android.provider.DocumentsContract + +object SafInitialUris { + private const val EXTERNAL_STORAGE_AUTHORITY = "com.android.externalstorage.documents" + + /** Internal-storage Documents — avoids the blocked volume root shown on Pixel devices. */ + fun internalDocuments(): Uri = + DocumentsContract.buildDocumentUri( + EXTERNAL_STORAGE_AUTHORITY, + "primary:Documents", + ) +}