0Pricing
Android Academy · Pelajaran

Meminta Izin di Compose

Gunakan API Accompanist atau hasil activity.

Meminta Izin di Compose adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Meminta Izin dalam Compose

Di Jetpack Compose, Anda meminta izin saat runtime menggunakan Activity Result API, yang dibungkus oleh rememberLauncherForActivityResult. Cara ini menghindari callback lama onRequestPermissionsResult.

Kontrak RequestPermission

Activity Result API menggunakan kontrak yang menentukan masukan dan keluaran. ActivityResultContracts.RequestPermission() menerima string izin dan mengembalikan hasil pemberian berupa Boolean.

Membuat Peluncur

rememberLauncherForActivityResult membuat peluncur yang terikat pada komposisi. Anda meneruskan kontrak dan callback yang menerima hasilnya.

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

Meluncurkan Permintaan

Panggil launcher.launch dengan izin yang Anda inginkan. Sistem akan menampilkan dialognya, lalu callback Anda dijalankan dengan pilihan pengguna.

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

Periksa Sebelum Meminta

Jangan meluncurkan permintaan secara membabi buta. Periksa terlebih dahulu apakah izin tersebut sudah diberikan, dan minta izin hanya jika belum diberikan.

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

Melacak Status dalam Compose

Simpan status pemberian saat ini dalam state agar UI dapat merespons. Perbarui status tersebut di dalam callback peluncur.

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

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

Meminta Beberapa Izin

Untuk beberapa izin sekaligus, gunakan kontrak RequestMultiplePermissions. Callback menerima peta dari izin ke status pemberiannya.

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
    )
)

Menggerakkan UI dari State

Tampilkan konten yang berbeda berdasarkan state pemberian: jika sudah diberikan, tampilkan fitur tersebut; jika belum, tampilkan tombol untuk memintanya. Dengan begitu, layar tetap reaktif dan jelas.

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

Pilihan Accompanist Permissions

Pustaka Accompanist Permissions menyediakan pembantu tingkat tinggi seperti rememberPermissionState. Banyak tim lebih memilih Activity Result API langsung untuk menghindari dependensi tambahan; keduanya valid.

Jangan Meminta Saat Peluncuran

Hindari menjalankan permintaan izin tepat saat layar muncul. Tunggu hingga pengguna mengetuk tindakan yang jelas-jelas memerlukannya. Permintaan berdasarkan konteks memiliki tingkat pemberian yang jauh lebih tinggi.

Ingat Perubahan Konfigurasi

rememberLauncherForActivityResult bertahan selama rekomposisi, dan kerangka kerja Activity Result mengirimkan hasil dengan benar bahkan saat terjadi perubahan konfigurasi seperti rotasi. Anda tidak perlu mengelola proses tersebut sendiri.

Pemeriksaan Cepat

Uji pemahaman Anda tentang cara meminta izin.

Rangkuman

Anda telah meminta izin dengan cara modern:

  • Gunakan rememberLauncherForActivityResult dengan kontrak RequestPermission
  • Periksa terlebih dahulu, lalu panggil launcher.launch(permission)
  • Lacak status pemberian dalam state untuk menggerakkan UI
  • Gunakan RequestMultiplePermissions untuk beberapa izin sekaligus

Berikutnya: menangani penolakan dan menampilkan alasan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Meminta Izin di Compose” gratis?

Ya — teks lengkap “Meminta Izin di Compose” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Meminta Izin di Compose”?

Gunakan API Accompanist atau hasil activity. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Meminta Izin di Compose” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Model Izin Android
  2. Meminta Izin di Compose
  3. Menangani Penolakan dan Alasan
  4. Praktik Terbaik untuk Privasi
← Kembali ke Android Academy