Saya tahu bahwa Android 6.0 memiliki izin baru dan saya tahu saya dapat memanggil mereka dengan sesuatu seperti ini
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_WRITE_STORAGE);
}
Hari ini saya melihat aplikasi Google yang membutuhkan 3 izin: kontak, sms dan kamera. Itu membuat halaman 1-3 dan memanggil mereka sekaligus untuk mengaktifkan.
Adakah yang bisa memberi tahu saya bagaimana saya dapat memanggil 4 izin untuk mengaktifkan pada saat yang sama seperti sms, kamera, kontak dan penyimpanan?
Contoh (lupa nama aplikasi google :()
Aplikasi ini membutuhkan sms, kontak, dan kamera
aplikasi bertanya kepada saya (dan melakukan dialog halaman1-3) mengaktifkan sms, mengaktifkan kontak dan kemudian kamera. Jadi aplikasi google ini memanggil semua 3 izin yang diperlukan bersama-sama dan pertanyaan saya adalah bagaimana saya dapat mencapai hal yang sama?
Jawaban:
Cukup sertakan semua 4 izin dalam
ActivityCompat.requestPermissions(...)
panggilan dan Android akan secara otomatis membuat halaman bersama seperti yang Anda sebutkan.Saya memiliki metode pembantu untuk memeriksa beberapa izin dan melihat apakah ada di antaranya yang tidak diberikan.
Atau di Kotlin:
Kemudian kirimkan saja semua izin. Android akan meminta hanya yang dibutuhkan saja.
sumber
Berikut adalah contoh terperinci dengan beberapa permintaan izin: -
Aplikasi ini membutuhkan 2 izin saat startup. SEND_SMS dan ACCESS_FINE_LOCATION (keduanya disebutkan dalam manifes.xml).
Saya menggunakan Support Library v4 yang disiapkan untuk menangani Android pra-Marshmallow sehingga tidak perlu memeriksa versi versi.
Segera setelah aplikasi dimulai, ia meminta beberapa izin bersama. Jika kedua izin diberikan, aliran normal berjalan.
ContextCompat.checkSelfPermission (), ActivityCompat.requestPermissions (), ActivityCompat.shouldShowRequestPermissionRationale () adalah bagian dari perpustakaan dukungan.
Jika satu atau lebih izin tidak diberikan, ActivityCompat.requestPermissions () akan meminta izin dan kontrol menuju ke metode callback onRequestPermissionsResult ().
Anda harus memeriksa nilai flag shouldShowRequestPermissionRationale () di metode callback onRequestPermissionsResult ().
Hanya ada dua kasus: -
Kasus 1: -Setiap kali pengguna mengklik Tolak izin (termasuk yang pertama kali), itu akan mengembalikan true. Jadi ketika pengguna menolak, kami dapat menunjukkan lebih banyak penjelasan dan terus bertanya lagi
Kasus 2: -Hanya jika pengguna memilih "tidak pernah bertanya lagi" itu akan kembali palsu. Dalam hal ini, kami dapat melanjutkan fungsionalitas terbatas dan memandu pengguna untuk mengaktifkan izin dari pengaturan untuk lebih banyak fungsi, atau kami dapat menyelesaikan pengaturan, jika izinnya sepele untuk aplikasi.
KASUS 1
KASUS-2
sumber
Kode kecil:
Daftar izin Android izin normal dan izin berbahaya di API 23
sumber
}
sumber
Mudah, lakukan cara ini
Di onCreate Anda
Kemudian periksa hasilnya
sumber
Pendekatan saya didasarkan pada jawaban Nicks dan mudah-mudahan sedikit lebih dapat digunakan untuk izin ganda (sebanyak yang dibutuhkan, tidak hanya dua). Itu menyarankan menambahkan kelas PermissionsHelper tanggung jawab tunggal:
}
Jika satu atau beberapa izin yang diperlukan belum diberikan oleh pengguna, pesan AlertDialog yang terperinci akan ditampilkan kepadanya.
Contoh penggunaan dalam Aktivitas:
Semoga ini bermanfaat bagi seseorang.
sumber
Kelas penangan saya untuk meminta beberapa izin. Anda dapat memeriksa selengkapnya menggunakan di sini
sumber
Metodologi berikut adalah tentang
Buat kelas "statis" untuk metode izin
Di MainActivity.java
sumber
Lihat tautan ini untuk memahami sepenuhnya tentang izin ganda, juga unduhan kode sumber lengkap, klik Di Sini
sumber
Memeriksa setiap situasi
jika ditolak - tunjukkan dialog Peringatan kepada pengguna mengapa kami memerlukan izin
Memeriksa Hasil Izin
sumber
Tidak ada yang salah dengan jawaban yang meminta beberapa izin tetapi beberapa kode hasil izin tidak diterapkan dengan sangat elegan dan dapat menyebabkan pengecekan hasil izin yang salah.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
Logika yang mengerikan untuk memeriksa hasil beberapa izin, saya tidak tahu mengapa Google menerapkan kode yang mengerikan.Ini berantakan terutama ketika Anda memeriksa beberapa izin. Katakanlah Anda meminta
CAMERA
,ACCESS_FINE_LOCATION
danACCESS_NETWORK_STATE
.Anda perlu memeriksa
ACCESS_FINE_LOCATION
tetapi pengguna hanya diberikanCAMERA
pada saat pertama kali dijalankan dan Anda memeriksagrantResults[1]
tetapi pada saat kedua berjalanACCESS_FINE_LOCATION
menjadi izin dengan indeks 0. Saya punya begitu banyak masalah dengan pengguna tidak memberikan semua izin sekaligus dan harus menulis logika hasil izin sehingga gunanya.Anda harus menggunakan
Atau yang lebih sederhana
dalam
onPermissionRequestResult
metode.sumber
Setelah melihat semua jawaban yang panjang dan kompleks. Saya ingin memposting jawaban ini.
RxPermission sekarang banyak digunakan perpustakaan untuk meminta izin dalam satu kode baris.
tambahkan di
build.gradle
Bukankah ini mudah?
sumber
Saya telah berhasil menerapkan kode sederhana untuk izin Berganda Sekaligus. Ikuti langkah-langkah di bawah ini 1: Buat kelas Utility.java seperti di bawah ini
2: Sekarang telepon
di Aktivitas Anda onCreate () atau sesuai dengan logika Anda.
3: Sekarang periksa izin sebelum melakukan operasi untuk tugas tertentu
4: Sekarang terapkan metode onRequestPermissionsResult () di Aktivitas Anda seperti di bawah ini
sumber
Pendek dan manis :). apa yang saya yakini.
sumber
sumber
Anda bisa menggunakan Dexter
Di
build.gradle
tambahkan:Dan gunakan dalam aktivitas Anda sebagai:
sumber
Saya menemukan ini dalam contoh izin runtime dari github Google.
sumber
Periksa bagian "Meminta beberapa izin sekaligus" dalam artikel ini:
Hal yang perlu Anda ketahui tentang izin Android M
Ini dijelaskan dengan sangat baik, dan mungkin juga menyentuh topik terkait lainnya yang belum Anda pikirkan.
sumber
Gunakan pembantu seperti ini (nama izin tidak masalah).
}
sumber
Cara sederhana untuk meminta beberapa izin,
https://github.com/sachinvarma/EasyPermission
Bagaimana cara menambahkan:
Cara meminta izin:
Untuk lebih jelasnya ->
https://github.com/sachinvarma/EasyPermission/blob/master/app/src/main/java/com/sachinvarma/easypermissionsample/MainActivity.java
Mungkin membantu seseorang di masa depan.
sumber
Di Kotlin:
sumber
Inilah yang telah saya lakukan dalam kegiatan saya. Berharap akan sangat membantu. Saya meminta izin kamera dan mikrofon.
sumber