KotlinLeaner
09/27/2022, 11:58 AMKotlinLeaner
09/27/2022, 11:59 AMpackage com.vivek.permission
import android.Manifest
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberMultiplePermissionsState
import com.vivek.permission.ui.theme.PermissionTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
PermissionTheme {
// A surface container using the 'background' color from the theme
Column(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.background)
) {
ExampleScreenWithAccompanist()
}
}
}
}
}
val permissionsList = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
listOf(
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
)
} else {
listOf(
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.ACCESS_COARSE_LOCATION,
)
}
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun ExampleScreenWithAccompanist() {
val multiplePermissionsState = rememberMultiplePermissionsState(permissions = permissionsList)
Text(text = "we need your permission", color = Color.White)
when {
multiplePermissionsState.allPermissionsGranted -> {
Text(text = " Permission Granted", color = Color.White)
}
multiplePermissionsState.shouldShowRationale -> {
Text(text = " Permission ShouldShowRationale", color = Color.White)
}
}
Button(onClick = {
multiplePermissionsState.launchMultiplePermissionRequest()
}) {
Text(text = "Give permission", color = Color.White)
}
}
Zach Klippenstein (he/him) [MOD]
09/27/2022, 2:43 PMmultiplePermissionsState.launchMultiplePermissionRequest
- what does that method do? It’s not obvious from this code snippet that it should trigger recomposition.KotlinLeaner
09/27/2022, 2:46 PMmultiplePermissionsState
KotlinLeaner
09/27/2022, 2:48 PMAlex Vanyo
09/27/2022, 4:50 PMonPermissionsResult
lambda that you can pass to rememberMultiplePermissionsState
KotlinLeaner
09/27/2022, 4:53 PM