Android Jetpack Compose – Accompanist: Permissions kullanımı
Accompanist Permissions kütüphanesi ile çalışma zamanı uygulama izinlerini istemek ve durumunu denetlemek oldukça basit hal alıyor. Ne kadar mı basit ? Şimdi kütüphaneyi deneyerek görelim…
Çıktı:
AndroidManifest.xml dosyamıza denemek istediğimiz izinimizi tanımlayalım. (Ben örnekte kamera izinini tercih ettim.)
<uses-permission android:name="android.permission.CAMERA" />
Kütüphaneyi projemize dahil edelim;
def permisson_version ='0.24.7-alpha'
implementation "com.google.accompanist:accompanist-permissions:$permisson_version"
İzin için gerekli olan fonksiyonumuzu üretelim;
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun RequestPermission() {
// kodlar bu aralığa yazılacak
}
kamera izini için state oluşturalım;
val cameraPermissionState = rememberPermissionState(
android.Manifest.permission.CAMERA
)
rememberPermissionState sadece bir adet durumu almak için kullanılırken, rememberMultiplePermissionsState ise birçok izin durumunu yakalamak için kullanılmaktadır.
Örn: rememberMultiplePermissionsState(listOf(“android.Manifest.permission.CAMERA”,”android.permissions.”VIBRATE”) gibi…
kamera izini durumuna göre işlem gerçekleştirelim; Granted izin alındı ise, Denied izin alınmadı veya reddedildiyse;
when(cameraPermissionState.status){
is PermissionStatus.Granted -> {
Column(
modifier = Modifier.fillMaxWidth().padding(10.dp)
) {
Text(text = "Kamera izini verildi")
}
}
is PermissionStatus.Denied -> {
Column(
modifier = Modifier.fillMaxWidth().padding(10.dp)
) {
Text(text = "Kamera izini verilmedi")
Button(modifier = Modifier.fillMaxWidth(), onClick = { cameraPermissionState.launchPermissionRequest() }) {
Text("Kamera izini iste")
}
}
}
}
Kodun tamamı ise şöyle;
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun RequestPermission() {
val cameraPermissionState = rememberPermissionState(
android.Manifest.permission.CAMERA
)
when(cameraPermissionState.status){
is PermissionStatus.Granted -> {
Column(
modifier = Modifier.fillMaxWidth().padding(10.dp)
) {
Text(text = "Kamera izini verildi")
}
}
is PermissionStatus.Denied -> {
Column(
modifier = Modifier.fillMaxWidth().padding(10.dp)
) {
Text(text = "Kamera izini verilmedi")
Button(modifier = Modifier.fillMaxWidth(), onClick = { cameraPermissionState.launchPermissionRequest() }) {
Text("Kamera izini iste")
}
}
}
}
}
Keyifli çalışmalar dilerim…
Son Yorumlar