0Pricing
Android Academy · Ders

Compose'da İzin İsteme

Accompanist veya etkinlik sonucu API'lerini kullanın.

Compose'da İzin İsteme, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.

Compose'ta İzin İsteme

Jetpack Compose'ta çalışma zamanı izinlerini, rememberLauncherForActivityResult ile sarmalanan Activity Result API'yi kullanarak istersiniz. Bu yaklaşım, eski onRequestPermissionsResult geri çağrısını kullanma gereğini ortadan kaldırır.

RequestPermission Sözleşmesi

Activity Result API, girdi ve çıktıyı tanımlayan sözleşmeler kullanır. ActivityResultContracts.RequestPermission() bir izin dizesi alır ve Boolean türünde bir izin verme sonucu döndürür.

Bir Başlatıcı Oluşturma

rememberLauncherForActivityResult, bileşime bağlı bir başlatıcı oluşturur. Sözleşmeyi ve sonucu alan bir geri çağrı işlevini geçirirsiniz.

val launcher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission()
) { isGranted ->
    if (isGranted) {
        // permission granted, use the feature
    } else {
        // permission denied
    }
}

İsteği Başlatma

İstediğiniz izni launcher.launch ile çağırın. Sistem iletişim kutusunu gösterir ve geri çağrınız kullanıcı seçimiyle çalışır.

Button(onClick = {
    launcher.launch(Manifest.permission.CAMERA)
}) {
    Text("Enable Camera")
}

İstemeden Önce Kontrol Edin

Bir isteği düşünmeden başlatmayın. Önce iznin zaten verilip verilmediğini kontrol edin; yalnızca verilmemişse isteyin.

val context = LocalContext.current
val alreadyGranted = ContextCompat.checkSelfPermission(
    context, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED

Compose'ta Durumu İzleme

Kullanıcı arayüzünün tepki verebilmesi için mevcut izin verme durumunu durumda tutun. Bu durumu başlatıcının geri çağrısı içinde güncelleyin.

var hasCamera by remember {
    mutableStateOf(
        ContextCompat.checkSelfPermission(
            context, Manifest.permission.CAMERA
        ) == PackageManager.PERMISSION_GRANTED
    )
}

val launcher = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestPermission()
) { granted -> hasCamera = granted }

Birden Çok İzin İsteme

Aynı anda birkaç izin için RequestMultiplePermissions sözleşmesini kullanın. Geri çağrı, izinleri izin verme durumlarıyla eşleyen bir harita alır.

val multi = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestMultiplePermissions()
) { results ->
    val fineLocation = results[Manifest.permission.ACCESS_FINE_LOCATION] == true
}

multi.launch(
    arrayOf(
        Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.ACCESS_COARSE_LOCATION
    )
)

Kullanıcı Arayüzünü Durumdan Yönetme

İzin verme durumuna göre farklı içerikler gösterin: İzin verilmişse özelliği gösterin; aksi durumda izin istemek için bir düğme gösterin. Bu yaklaşım, ekranı tepkisel ve anlaşılır tutar.

if (hasCamera) {
    CameraPreview()
} else {
    Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) {
        Text("Grant camera access")
    }
}

Accompanist Permissions Seçeneği

Accompanist Permissions kitaplığı, rememberPermissionState gibi daha üst düzey yardımcılar sunar. Ek bir bağımlılıktan kaçınmak için birçok ekip doğrudan Activity Result API'sini kullanmayı tercih eder; her iki seçenek de geçerlidir.

Başlatma Sırasında İzin İstemeyin

Bir ekran görünür görünmez izin isteği göndermekten kaçının. Kullanıcı, izni açıkça gerektiren bir eyleme dokunana kadar bekleyin. Bağlama dayalı isteklerin izin verilme oranı çok daha yüksektir.

Yapılandırma Değişikliklerini Hatırlayın

rememberLauncherForActivityResult yeniden bileşimden etkilenmeden varlığını sürdürür ve Activity Result çatısı, döndürme gibi yapılandırma değişikliklerinde bile sonuçları doğru şekilde iletir. Bu altyapıyı kendiniz yönetmeniz gerekmez.

Hızlı Kontrol

İzin istemeyi anlayıp anlamadığınızı test edin.

Özet

İzinleri modern yöntemle istediniz:

  • rememberLauncherForActivityResult ile RequestPermission sözleşmesini kullanın
  • Önce kontrol edin, ardından launcher.launch(permission) çağrısını yapın
  • Kullanıcı arayüzünü yönetmek için izin verme durumunu durumda izleyin
  • Aynı anda birkaç izin için RequestMultiplePermissions kullanın

Sırada: retleri ele alma ve gerekçe gösterme.

Sıkça Sorulan Sorular

“Compose'da İzin İsteme” dersi ücretsiz mi?

Evet — “Compose'da İzin İsteme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.

“Compose'da İzin İsteme” dersinde ne öğreneceğim?

Accompanist veya etkinlik sonucu API'lerini kullanın. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Compose'da İzin İsteme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Android İzin Modeli
  2. Compose'da İzin İsteme
  3. Retleri ve Gerekçeyi Ele Alma
  4. Gizlilik için En İyi Uygulamalar
← Android Academy Sayfasına Dön