Saat ini saya sedang mengerjakan aplikasi yang memerlukan beberapa izin "berbahaya". Jadi saya mencoba menambahkan "minta izin" seperti yang diperlukan di Android Marshmallow (API Level 23), tetapi tidak dapat menemukan cara melakukannya.
Bagaimana saya bisa meminta izin menggunakan model izin baru di aplikasi saya?
Jawaban:
Buka Dialog menggunakan kode di bawah ini:
Dapatkan hasil Aktivitas seperti di bawah ini:
Info lebih lanjut: https://developer.android.com/training/permissions/requesting.html
sumber
ActivityCompat.requestPermissions
usang? (dalam Nugat)Struktur ini saya gunakan untuk memeriksa apakah aplikasi saya memiliki izin dan daripada meminta jika tidak memiliki izin. Jadi dalam kode utama saya dari mana saya ingin memeriksa tulis berikut:
Modul checkIfAlreadyhavePermission () diimplementasikan sebagai:
Modul requestForSpecificPermission () diimplementasikan sebagai:
dan Override in Activity:
Lihat tautan ini untuk detail lebih lanjut: http://revisitingandroid.blogspot.in/2017/01/how-to-check-and-request-for-run-time.html
sumber
checkIfAlreadyhavePermission
kereturn result == PackageManager.PERMISSION_GRANTED;
Saya telah menggunakan pembungkus ini (Disarankan) yang ditulis oleh pengembang google. Sangat mudah digunakan.
https://github.com/googlesamples/easypermissions
Berfungsi menangani pengecekan dan meminta izin jika diperlukan
Selamat coding :)
sumber
Mulai di Android Marshmallow, kami perlu meminta pengguna untuk izin khusus. Kami juga dapat memeriksa kode jika izin sudah diberikan. Berikut adalah daftar izin yang biasanya dibutuhkan:
Berikut ini contoh kode untuk memeriksa izin:
sumber
Kelas saya untuk izin runtime permintaan di
Activity
atauFragment
Ini juga membantu Anda menunjukkan alasan atau membuka Pengaturan untuk mengaktifkan izin setelah pengguna menolak
Never ask again
opsi izin (dengan / tanpa ) lebih mudahMenggunakan dalam
Activity
sukaKode pada Github
Demo
sumber
Android-M yaitu, API 23 memperkenalkan Izin Runtime untuk mengurangi kelemahan keamanan di perangkat android, di mana pengguna sekarang dapat langsung mengelola izin aplikasi saat runtime.so jika pengguna menolak izin tertentu dari aplikasi Anda, Anda harus mendapatkannya dengan meminta dialog izin yang Anda sebutkan dalam kueri Anda.
Jadi, periksa sebelum tindakan yaitu, periksa apakah Anda memiliki izin untuk mengakses tautan sumber daya dan jika aplikasi Anda tidak memiliki izin khusus itu, Anda dapat meminta tautan izin dan menangani respons permintaan izin seperti di bawah ini.
Jadi akhirnya, Ini adalah praktik yang baik untuk melalui perubahan perilaku jika Anda berencana untuk bekerja dengan versi baru untuk menghindari penutupan paksa :)
Izin Praktik Terbaik.
Anda dapat pergi melalui aplikasi sampel resmi di sini .
sumber
Dari Android Marshmallow (API 23) dan di atasnya secara default semua izin berbahaya (sesuai dokumen resmi doc resmi ) dinonaktifkan. Setelah instalasi ketika aplikasi dibuka pertama kali maka Anda harus memberikan izin pada Run Time.
Saya mencapai cara berikut ini:
DI kelas aktivitas Anda:
sumber
Tambahkan izin ke AndroidManifest.xml
Untuk memeriksa versi Android apakah perlu izin runtime atau tidak.
Minta pengguna untuk memberikan izin jika tidak diberikan.
Lakukan sesuatu jika izin diberikan atau tidak.
sumber
Saya menggunakan ini sebagai kelas Fragmen dasar. Saya hanya meminta izin dari sebuah fragmen, tetapi Anda dapat melakukan refactor dan membuat versi Activity yang serupa.
Ada dua metode utama yang harus Anda gunakan:
hasPermissionOrWillAsk - Gunakan ini untuk melihat apakah izin telah diminta dan ditolak oleh pengguna yang tidak ingin ditanya lagi. Ini berguna untuk menonaktifkan UI ketika pengguna telah memberikan jawaban akhir mereka tentang TIDAK menginginkan fitur.
runNowOrAskForPermissionsFirst - Gunakan ini untuk menjalankan beberapa kode yang memerlukan izin. Jika pengguna telah memberikan izin, kode akan segera dijalankan. Jika tidak, kode akan berjalan nanti jika pengguna memberikan izin. Atau tidak sama sekali. Sangat menyenangkan karena Anda menentukan kode di satu tempat.
Ini sebuah contoh:
Senang mendapatkan umpan balik tentang ini. Bukan berarti contoh khusus ini sedikit disederhanakan karena Anda juga perlu memeriksa untuk melihat apakah Layanan Lokasi diaktifkan pada perangkat. (Itu berbeda dari izin.) Selain itu, itu hanya mendukung satu izin pada satu waktu, tetapi akan mudah untuk dimodifikasi jika Anda memerlukannya untuk mendukung lebih dari satu per satu.
sumber
Ini mungkin cara yang lebih bersih. Tambahkan semua izin Anda dalam array seperti
Apa pun izin Anda, buat metode untuk setiap izin
Panggil metode ini di onCreate
Sekarang ganti padaRequestPermissionsResult
sumber
Untuk beberapa izin sekaligus Anda dapat menggunakan ini. Ini bekerja untuk saya .. Saya punya solusi lain. jika Anda memberikan targetSdkVersion Anda di bawah 22 ini berfungsi untuk saya. dan itu perilaku seperti suka mendapatkan izin dari manifest.xml. Diuji dan bekerja untuk saya.
Untuk lebih jelasnya. Periksa tautan di bawah ini
https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en
sumber
Untuk menangani izin runtime, Google telah menyediakan proyek perpustakaan. Anda dapat memeriksanya dari sini https://github.com/googlesamples/easypermissions
EasyPermissions diinstal dengan menambahkan dependensi berikut ke file build.gradle Anda:
Untuk mulai menggunakan EasyPermissions, minta Kegiatan Anda (atau Fragmen) mengesampingkan metode onRequestPermissionsResult:
Di sini Anda akan mendapatkan contoh kerja bagaimana perpustakaan ini berfungsi https://github.com/milon87/EasyPermission
sumber
Ada perpustakaan yang baik yang dapat digunakan jika izin perlu ditanyakan ketika izin diperlukan oleh layanan latar belakang. Meskipun keterbatasan perpustakaan adalah bahwa itu tidak dapat digunakan untuk menentukan apakah izin saat ini diberikan ke aplikasi atau tidak. Selalu bertanya kepada pengguna apakah aplikasi belum memilikinya.
Jangan mencobanya karena membuat hidup lebih sederhana: Izin Android
sumber
Kode di bawah ini berfungsi dengan baik. Saya menjelaskan dengan bantuan contoh.
Dalam kasus saya, saya menempatkan pemeriksaan izin secara terpisah dalam kelas util dan lulus izin khusus yang perlu saya periksa dari kelas yang sesuai. Ini diaktifkan untuk menggunakan kembali file izin periksa izin di seluruh aplikasi.
Bagian kode di bawah ini menunjukkan panggilan fungsi. Dalam hal ini saya meminta
android.Manifest.permission.READ_EXTERNAL_STORAGE
izin.Dalam kasus di atas izin diperiksa jika diizinkan
onAttachPressed();
fungsi dipanggil lain, kami memeriksa izin permintaan.Di bawah ini adalah kode yang ada di kelas util dalam kasus saya
PermissionUtils
Dan setelah permintaan jika Anda mungkin ingin memanggil fungsi dari
onRequestPermissionsResult
atau Anda perlu menekan tombol lagi untuk panggilan fungsi.Jadi panggil saja dari
onRequestPermissionsResult
sumber
Saya menggunakan perpustakaan perpustakaan RxPermission untuk meminta izin. Karena itu adalah kode panjang yang harus kami tulis untuk meminta izin.
Tambahkan ketergantungan ini di
build.gradle
sumber
Coba ini
Ini adalah cara paling sederhana untuk meminta izin dalam versi Marshmallow.
Catatan: - Jangan lupa untuk menambahkan izin yang sama ini dalam file manifes juga
Kode Metode Kedua untuk memeriksa izin diberikan atau tidak?
Dan timpa metode ini
sumber
Cara sederhana untuk meminta izin dengan menghindari menulis banyak kode,
https://github.com/sachinvarma/EasyPermission
Bagaimana cara menambahkan:
Cara meminta izin:
Berharap itu akan bermanfaat bagi seseorang.
sumber
Saya telah memeriksa semua jawaban, tetapi tidak puas dengan jawaban yang saya butuhkan, jadi ini adalah contoh yang saya tulis dan berfungsi dengan baik, bahkan pengguna mengklik kotak centang Jangan tanya lagi .
Buat metode yang akan dipanggil ketika Anda ingin meminta izin runtime seperti
readContacts()
atau Anda juga dapat memilikiopenCamera()
seperti yang ditunjukkan di bawah ini:Sekarang kita perlu membuat
askContactsPermission()
, Anda juga dapat menyebutkannya sebagaiaskCameraPermission()
atau izin apa pun yang akan Anda tanyakan.Sebelum menulis fungsi ini pastikan Anda telah menetapkan variabel instance di bawah ini seperti yang ditunjukkan:
Sekarang langkah terakhir untuk mengganti
onRequestPermissionsResult
metode seperti yang ditunjukkan di bawah ini:Di sini kita selesai dengan izin RunTime, addon adalah
openPermissionSettingDialog()
yang cukup membuka layar Pengaturan jika pengguna telah menonaktifkan izin secara permanen dengan mengklik kotak centang Jangan tanya lagi . di bawah ini adalah metode:Apa yang kami lewatkan? 1. Menentukan string yang digunakan
strings.xml
Menginisialisasi
parentLayout
variabel di dalamonCreate
metodeparentLayout = findViewById (R.id.content);
Menentukan izin yang diperlukan di
AndroidManifest.xml
The
queryContacts
metode, berdasarkan kebutuhan Anda atau runtime izin Anda dapat memanggil metode Anda sebelum yangpermission
diperlukan. dalam kasus saya, saya hanya menggunakan loader untuk mengambil kontak seperti yang ditunjukkan di bawah ini:Ini bekerja dengan sangat baik coding :)
sumber
Jika Anda menggunakan AndroidX Activity 1.2.0 atau AndroidX Fragment 1.3.0 :
Ada API Hasil Aktivitas baru yang dapat Anda gunakan untuk meminta izin:
sumber
sumber
Anda dapat menggunakan perpustakaan saya - NoPermission (Hanya satu kelas)
compile 'ru.alexbykov:nopermission:1.1.1'
Sampel
padaRequestPermissionResult:
Saya pikir api lebih nyaman daripada
EasyPermissions
oleh Google.sumber
Izin Runtime Di Mana Pun Dalam Aplikasi Berikut Ini Contoh
dan panggil kode seperti ini:
Anda dapat menemukan lebih banyak Github
sumber
Izin waktu berjalan membuat banyak kode boilerplate dalam aktivitas yang sangat digabungkan. Untuk mengurangi kode dan mempermudahnya, Anda bisa menggunakan perpustakaan Dexter .
sumber
IZIN RUNTIM DI ANDROID
Metode OnClick adalah untuk memeriksa izin runtime
dan jika Izin dibatasi maka itu meminta izin
sumber