diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6888c81..9fcce4b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,7 +4,11 @@ + + + + = Build.VERSION_CODES.S) { arrayOf( Manifest.permission.BLUETOOTH_ADVERTISE, - Manifest.permission.BLUETOOTH_CONNECT + Manifest.permission.BLUETOOTH_CONNECT, + Manifest.permission.BLUETOOTH_SCAN, + Manifest.permission.ACCESS_FINE_LOCATION, // Required for BLE operations + Manifest.permission.ACCESS_COARSE_LOCATION // Required for BLE operations ) } else { arrayOf( Manifest.permission.BLUETOOTH, - Manifest.permission.BLUETOOTH_ADMIN + Manifest.permission.BLUETOOTH_ADMIN, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION ) } @@ -238,14 +243,18 @@ class MainActivity : ComponentActivity() { } } } else { - Log.w(TAG, "Some permissions denied: ${permissions.filter { !it.value }.keys}") + // Show which permissions were denied + val deniedPermissions = permissions.filter { !it.value }.keys + Log.w(TAG, "Some permissions denied: $deniedPermissions") setContent { MaterialTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - PermissionDeniedScreen { requestPermissions() } + PermissionDeniedScreen( + deniedPermissions = deniedPermissions.toList() + ) { requestPermissions() } } } } @@ -291,8 +300,11 @@ class MainActivity : ComponentActivity() { } @Composable -fun PermissionDeniedScreen(onRequestPermissions: () -> Unit) { - Log.d(TAG, "Showing permission denied screen") +fun PermissionDeniedScreen( + deniedPermissions: List, + onRequestPermissions: () -> Unit +) { + Log.d(TAG, "Showing permission denied screen for permissions: $deniedPermissions") Column( modifier = Modifier .fillMaxSize() @@ -301,16 +313,25 @@ fun PermissionDeniedScreen(onRequestPermissions: () -> Unit) { verticalArrangement = Arrangement.Center ) { Text( - text = "Bluetooth permissions are required to use this app", + text = "The following permissions are required:", style = MaterialTheme.typography.bodyLarge, textAlign = TextAlign.Center, - modifier = Modifier.padding(bottom = 16.dp) + modifier = Modifier.padding(bottom = 8.dp) ) + deniedPermissions.forEach { permission -> + Text( + text = "• ${permission.split(".").last()}", + style = MaterialTheme.typography.bodyMedium, + textAlign = TextAlign.Center, + modifier = Modifier.padding(vertical = 4.dp) + ) + } Button( onClick = { Log.d(TAG, "Permission request button clicked") onRequestPermissions() - } + }, + modifier = Modifier.padding(top = 16.dp) ) { Text("Grant Permissions") }