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…

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir