I want to request runtime permission. But it only show one request. Can someone guide me how can I achieve this in jetpack compose. I am using compose 1.1.1
and using accompanist-permissions with 0.23.1
version.
I declare permission in my manifest according to this official doc..
In Manifest.xml
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:targetApi="s" />
<!-- Needed only if your app makes the device discoverable to Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<!-- Needed only if your app communicates with already-paired Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-feature android:name="android.hardware.bluetooth" android:required="true"/>
I tried this piece of code
BluetoothRequestActivity.kt
class BluetoothRequestActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Theme {
val multiplePermissionsState = rememberMultiplePermissionsState(
listOf(
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT,
Manifest.permission.BLUETOOTH_ADVERTISE,
Manifest.permission.BLUETOOTH_ADMIN
)
)
AppBarScaffold(abc = true) {
BluetoothRequest(multiplePermissionsState, onCancelClick = {
finish()
})
}
}
}
}
}
Another compose function
BluetoothRequest
@Composable
fun BluetoothRequest(
multiplePermissionsState: MultiplePermissionsState,
onCancelClick: () -> Unit
) {
Column {
BluetoothRequestItem()
BluetoothRequestContinue(multiplePermissionsState)
BluetoothRequestCancel(onCancelClick)
}
}
BluetoothRequestContinue
@Composable
fun BluetoothRequestContinue(multiplePermissionsState: MultiplePermissionsState) {
MaterialButton(
text = stringResource(R.string.continue_text),
spacerHeight = dimensionResource(10.dp)
) {
multiplePermissionsState.launchMultiplePermissionRequest()
}
}
I am getting only single request permission like this