Added needed permissions for Android 14 (API level 34 / U) and up.
This commit is contained in:
parent
c9704c4bf4
commit
4af85426c7
2 changed files with 34 additions and 9 deletions
|
@ -4,7 +4,11 @@
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
|
||||||
<uses-feature
|
<uses-feature
|
||||||
android:name="android.hardware.bluetooth_le"
|
android:name="android.hardware.bluetooth_le"
|
||||||
|
|
|
@ -210,12 +210,17 @@ class MainActivity : ComponentActivity() {
|
||||||
private val requiredPermissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
private val requiredPermissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
arrayOf(
|
arrayOf(
|
||||||
Manifest.permission.BLUETOOTH_ADVERTISE,
|
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 {
|
} else {
|
||||||
arrayOf(
|
arrayOf(
|
||||||
Manifest.permission.BLUETOOTH,
|
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 {
|
} 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 {
|
setContent {
|
||||||
MaterialTheme {
|
MaterialTheme {
|
||||||
Surface(
|
Surface(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
color = MaterialTheme.colorScheme.background
|
color = MaterialTheme.colorScheme.background
|
||||||
) {
|
) {
|
||||||
PermissionDeniedScreen { requestPermissions() }
|
PermissionDeniedScreen(
|
||||||
|
deniedPermissions = deniedPermissions.toList()
|
||||||
|
) { requestPermissions() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -291,8 +300,11 @@ class MainActivity : ComponentActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PermissionDeniedScreen(onRequestPermissions: () -> Unit) {
|
fun PermissionDeniedScreen(
|
||||||
Log.d(TAG, "Showing permission denied screen")
|
deniedPermissions: List<String>,
|
||||||
|
onRequestPermissions: () -> Unit
|
||||||
|
) {
|
||||||
|
Log.d(TAG, "Showing permission denied screen for permissions: $deniedPermissions")
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
|
@ -301,16 +313,25 @@ fun PermissionDeniedScreen(onRequestPermissions: () -> Unit) {
|
||||||
verticalArrangement = Arrangement.Center
|
verticalArrangement = Arrangement.Center
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = "Bluetooth permissions are required to use this app",
|
text = "The following permissions are required:",
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
textAlign = TextAlign.Center,
|
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(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
Log.d(TAG, "Permission request button clicked")
|
Log.d(TAG, "Permission request button clicked")
|
||||||
onRequestPermissions()
|
onRequestPermissions()
|
||||||
}
|
},
|
||||||
|
modifier = Modifier.padding(top = 16.dp)
|
||||||
) {
|
) {
|
||||||
Text("Grant Permissions")
|
Text("Grant Permissions")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue