Cara Mengatasi Access Denied Di Android

Cara Mengatasi Access Denied Di Android

Setiap aplikasi Android melanglang n domestik sandbox dengan akses kurang. Seandainya aplikasi perlu menggunakan resource maupun informasi di luar sandbox-nya koteng, Sira dapat mendeklarasikan abolisi dan menyiagakan petisi magfirah yang menyediakan akses ini. Langkah-langkah ini yakni bagian mulai sejak alur kerja untuk memperalat ampunan.

Takdirnya Engkau mendeklarasikan ampunan berbahaya dan jika aplikasi diinstal lega perabot yang menjalankan Android 6.0 (Jago merah level 23) atau yang lebih tinggi, Ia harus lamar maaf berbahaya saat runtime dengan mengikuti awalan-ancang kerumahtanggaan panduan ini.

Takdirnya Anda tidak mendeklarasikan pembebasan berbahaya, atau jika aplikasi diinstal di perkakas nan menjalankan Android 5.1 (Api level 22) ataupun lebih terbatas, izin akan diberikan secara otomatis, dan Dia lain terbiasa menyelesaikan langkah-langkah lainnya di pekarangan ini.

Mandu dasar

Mandu bawah buat lamar izin saat runtime adalah bak berikut:

  • Minta izin dalam konteks, saat pengguna start berinteraksi dengan fitur nan memerlukan izin.
  • Jangan blokir pengguna. Pelalah berikan opsi untuk membatalkan alur UI edukatif yang tersapu dengan izin.
  • Jika pengguna menyorong atau mencabut magfirah yang diperlukan satu fitur, turunkan varian permintaan Beliau dengan baik sehingga pengguna dapat terus memperalat permintaan Anda, boleh jadi bisa dilakukan dengan menonaktifkan fitur yang memerlukan izin tersebut.
  • Jangan asumsikan perilaku sistem apa pun. Misalnya, jangan berasumsi bahwa pemaafan muncul privat
    grup pemaafan
    yang sama. Grup lepas hanya kondusif sistem meminimalkan jumlah dialog sistem yang ditampilkan kepada pengguna saat aplikasi meminang izin yang terkait erat.

Alur kerja untuk meminang lepas

Sebelum mendeklarasikan dan meminta pembebasan runtime di petisi, evaluasi apakah aplikasi Dia perlu melakukannya. Sira dapat memenuhi banyak kasus penggunaan di tuntutan, begitu juga mengambil foto, menjeda pemutaran ki alat, dan memajukan iklan yang relevan, tanpa perlu mendeklarasikan pemaafan apa pun.

Sekiranya Anda menyarikan bahwa aplikasi perlu mendeklarasikan dan menanyakan izin runtime, selesaikan langkah-ancang berikut:

  1. Dalam file surat muatan aplikasi, deklarasikan izin yang mungkin perlu diminta petisi Sira.
  2. Rancang UX permohonan Anda kiranya tindakan tertentu privat tuntutan dikaitkan dengan izin runtime tertentu. Pemakai harus memafhumi tindakan yang mungkin mengharuskan mereka menerimakan abolisi bagi aplikasi Anda bikin mengakses data pribadi pemakai.
  3. Tunggu pengguna untuk memanggil tugas atau tindakan di permintaan Anda nan memerlukan akses ke data pribadi pemakai tertentu. Pada momen itu, aplikasi Ia dapat menanyakan ampunan runtime yang diperlukan untuk mengakses data tersebut.
  4. Bahas apakah pengguna telah memberikan belas kasihan runtime yang diperlukan aplikasi Sira. Jika sudah lalu ada, permohonan Sira dapat mengakses data pribadi konsumen. Jika belum, lanjutkan ke langkah berikutnya.

    Anda harus memeriksa apakah Dia memiliki maaf tersebut setiap barangkali melakukan operasi yang memerlukan abolisi tersebut.

  5. Periksa apakah aplikasi Anda harus memunculkan alasan kepada pengguna, nan menguraikan alasan pengguna harus memasrahkan absolusi runtime tertentu bakal permohonan Beliau. Jikalau sistem menentukan bahwa petisi Anda seharusnya tidak menyodorkan alasan, lanjutkan langsung ke anju berikutnya, sonder menampilkan molekul UI.

    Namun, seandainya sistem menentukan bahwa aplikasi Ia harus menyorongkan alasan, tampilkan alasan kepada pengguna dalam zarah UI. Alasan ini harus menyatakan dengan jelas data yang dicoba diakses maka itu aplikasi Anda, dan kelebihan yang dapat permohonan berikan kepada pengguna kalau mereka memasrahkan izin runtime. Setelah pengguna mengonfirmasi alasannya, lanjutkan ke anju berikutnya.

  6. Minta pemaafan runtime yang diperlukan petisi Sira untuk mengakses data pribadi pemakai. Sistem menampilkan permintaan pemaafan runtime, seperti mana yang ditampilkan puas halaman rangkuman amnesti.

  7. Telaah respons pengguna, apakah mereka memilih untuk menerimakan ataupun menyorong izin runtime.

  8. Jika pengguna memberikan amnesti bagi permintaan, Anda dapat mengakses data pribadi pemakai. Kalau pengguna memurukkan izin, turunkan pengalaman permintaan Anda secara halus agar aplikasi menyediakan fungsi bagi pengguna, meskipun minus pemberitaan nan dilindungi makanya abolisi tersebut.

Gambar 1 menggambarkan silsilah kerja dan koleksi keputusan terkait proses ini:

Buram 1.
Diagram yang menunjukkan alur kerja kerjakan mendeklarasikan dan meminang izin runtime di Android.

Menentukan apakah aplikasi telah diberi amnesti

Cak bagi memastikan apakah pengguna mutakadim memberikan izin tertentu bakal aplikasi Ia, teruskan izin tersebut ke metode
ContextCompat.checkSelfPermission(). Metode ini menampilkan
PERMISSION_GRANTED
ataupun
PERMISSION_DENIED, tersangkut apakah aplikasi Ia mempunyai izin atau tidak.

Menjelaskan alasan aplikasi memerlukan maaf

Dialog ampunan yang ditampilkan maka itu sistem saat Engkau menamai
requestPermissions()
menunjukkan jenis izin yang diperlukan permohonan, tetapi bukan menyebutkan alasannya. Lega bilang kasus, situasi ini bisa jadi menggugupkan pengguna. Mudahmudahan jelaskan kepada pengguna alasan petisi Kamu memerlukan magfirah sebelum memanggil
requestPermissions().

Penyelidikan menunjukkan bahwa pengguna jauh lebih nyaman dengan permohonan ampunan seandainya mereka tahu alasan aplikasi memerlukannya. Sebuah studi konsumen menunjukkan bahwa:

…kerelaan pengguna cak bagi memberikan amnesti bagi aplikasi seluler tertentu dulu dipengaruhi oleh maksud yang terkait dengan amnesti tersebut. Misalnya, kesediaan pemakai untuk memberikan akal masuk ke lokasinya akan berbeda bersendikan apakah petisi tersebut diperlukan kerjakan mendukung fungsi inti aplikasi, alias untuk membagikan wara-wara ini kepada jaringan periklanan atau perusahaan amatan.

1

Sehabis berkolaborasi dengan pihak tidak dalam penajaman tentang topik ini, Mahaguru Jason Hong dari CMU menyimpulkan bahwa, secara mahajana:

…orang akan merasa lebih nyaman sekiranya memaklumi alasan aplikasi menggunakan mualamat sensitif seperti lokasi, misalnya untuk periklanan berkeinginan, tinimbang semata-mata diberi tahu bahwa permintaan semenjana menunggangi lokasinya.

1

Akibatnya, jika Sira sekadar menggunakan sebagian kerdil panggilan Jago merah yang termasuk dalam sebuah grup maaf, sebaiknya cantumkan secara eksplisit manakah berbunga maaf tersebut yang Anda gunakan, dan apa alasannya. Lengkap:

  • Jika Dia hanya menggunakan lokasi sementara, beritahukan keadaan ini kepada pengguna dalam deskripsi aplikasi atau artikel sambung tangan permintaan Engkau.
  • Jika Anda memerlukan akal masuk ke pesan SMS untuk memufakati kode autentikasi yang melindungi pemakai dari pengelabuan, beritahukan keadaan ini kepada pengguna privat deskripsi permintaan dan ketika aplikasi pertama mana tahu teristiadat mengakses data.

    Gubahan:
    Kalau permohonan Kamu menetapkan Android 8.0 (API level 26) alias nan lebih tinggi, jangan minta izin
    READ_SMS
    sebagai putaran dari proses konfirmasi kredensial pengguna. Sebagai gantinya, lakukan token khusus permintaan menggunakan
    createAppSpecificSmsToken(), lalu teruskan token ini ke petisi atau layanan lain yang dapat mengirimkan wanti-wanti SMS verifikasi.

Intern kondisi tertentu, ada baiknya juga memberi adv pernah pengguna tentang akses data sensitif secara betulan time. Misalnya, jika Anda mengakses kodak atau mikrofon, agar beri tahu pemakai melangkahi ikon notifikasi di suatu tempat dalam aplikasi Sira, atau privat tray notifikasi (takdirnya aplikasi berjalan di meres belakang), sehingga bukan tampak seperti Anda mengumpulkan data secara sembunyi-sembunyi.

Read:  Cara Membuat Dokumen Di Wps Office

Nan bontot, jika Anda perlu meminta izin seyogiannya sesuatu dalam permohonan Engkau dapat bepergian, tetapi alasannya tidak jelas bagi konsumen, temukan cara agar pengguna mencerna kok Anda memerlukan absolusi minimal temperamental tersebut.

Jika metode
ContextCompat.checkSelfPermission()
menyampaikan
PERMISSION_DENIED, panggil
shouldShowRequestPermissionRationale(). Seandainya metode ini menampilkan
true, tampilkan UI edukasi kepada konsumen. Pada UI ini, jelaskan alasan fitur yang ingin diaktifkan pengguna memerlukan pembebasan tertentu.

Selain itu, jikalau aplikasi Anda meminta izin terkait lokasi, mikrofon, atau pemotret, pertimbangkan penjelasan mengapa aplikasi Anda memerlukan akses cak bagi proklamasi ini.

Meminta izin

Setelah konsumen menyibuk UI edukasi, atau kredit hasil
shouldShowRequestPermissionRationale()
menunjukkan bahwa Anda enggak perlu menampilkan UI edukasi kini, minta izin. Pengguna akan mengawasi dialog izin sistem, momen mereka dapat memilih apakah akan menerimakan izin tertentu ke petisi Anda atau tidak.

Secara tradisional, Anda mengurus sendiri kode permintaan sebagai penggalan berpokok aplikasi izin dan menyertakan kode permintaan ini dalam ilmu mantik callback amnesti Kamu. Opsi lainnya adalah menggunakan kontrak
RequestPermission, yang disertakan dalam library AndroidX, tempat Beliau mengizinkan sistem mengelola kode permintaan izin untuk Anda. Karena menggunakan kontrak
RequestPermission
akan menyederhanakan logika Anda, sebaiknya Anda menggunakannya jikalau memungkinkan.

Mengizinkan sistem mengelola kode permintaan izin

Bakal mengizinkan sistem mengelola kode permintaan nan terkait dengan permintaan maaf, tambahkan ketergantungan pada library berikut di file
build.gradle
modul Anda:

  • androidx.activity, varian 1.2.0 maupun yang lebih plonco.
  • androidx.fragment, varian 1.3.0 atau yang kian hijau.

Kemudian, Ia dapat menggunakan salah satu class berikut:

  • Untuk meminang suatu izin, gunakan
    RequestPermission.
  • Untuk meminta bilang izin secara bersamaan, gunakan
    RequestMultiplePermissions.

Langkah-persiapan berikut menunjukkan cara menggunakan sewa
RequestPermission. Prosesnya rapat persaudaraan sama buat kontrak
RequestMultiplePermissions.

  1. Dalam logika inisialisasi aktivitas maupun episode, teruskan implementasi
    ActivityResultCallback
    ke dalam panggilan ke
    registerForActivityResult().
    ActivityResultCallback
    menentukan cara permohonan Beliau menangani respons pengguna terhadap aplikasi maaf.

    Simpan referensi ke biji hasil
    registerForActivityResult(), yang berjenis
    ActivityResultLauncher.

  2. Cak bagi mengedepankan dialog belas kasihan sistem momen diperlukan, panggil metode
    launch()
    pada instance
    ActivityResultLauncher
    yang Kamu simpan pada langkah sebelumnya.

    Setelah
    launch()
    dipanggil, dialog abolisi sistem akan muncul. Detik pengguna menentukan seleksian, sistem akan memanggil implementasi
    ActivityResultCallback
    secara asinkron, nan sudah Anda tentukan pada langkah sebelumnya.

    Catatan:
    Permohonan Anda
    bukan dapat
    mengimbangkan dialog yang muncul ketika Anda memanggil
    launch(). Untuk memberikan makin banyak informasi maupun konteks kepada pengguna, ubah UI aplikasi Anda kiranya lebih mudah bagi pemakai lakukan memahami alasan fitur dalam aplikasi Anda memerlukan ampunan tertentu. Misalnya, Kamu dapat menafsirkan wacana di tombol nan mengaktifkan fitur tersebut.

    Selain itu, referensi dalam dialog izin sistem merujuk ke grup izin nan terkait dengan izin yang Sira minta. Pengelompokan izin ini dirancang kerjakan akomodasi eksploitasi sistem, dan aplikasi Beliau bukan bisa mengandalkan izin yang suka-suka di privat atau di asing grup izin tertentu.

Cuplikan kode berikut menunjukkan cara menindak respons magfirah:

Kotlin

// Register the permissions callback, which handles the user's response to the // system permissions dialog. Save the return value, an instance of // ActivityResultLauncher. You can use either a val, as shown in this snippet, // or a lateinit var in your onAttach() or onCreate() method. val requestPermissionLauncher =     registerForActivityResult(RequestPermission()     ) { isGranted: Boolean ->         if (isGranted) {             // Permission is granted. Continue the action or workflow in your             // app.         } else {             // Explain to the user that the feature is unavailable because the             // features requires a permission that the user has denied. At the             // same time, respect the user's decision. Don'kaki langit link to system             // settings in an effort to convince the user to change their             // decision.         }     }
          

Java

// Register the permissions callback, which handles the user's response to the // system permissions dialog. Save the return value, an instance of // ActivityResultLauncher, as an instance variable. private ActivityResultLauncher<String> requestPermissionLauncher =     registerForActivityResult(new RequestPermission(), isGranted -> {         if (isGranted) {             // Permission is granted. Continue the action or workflow in your             // app.         } else {             // Explain to the user that the feature is unavailable because the             // features requires a permission that the user has denied. At the             // same time, respect the user's decision. Don'lengkung langit link to system             // settings in an effort to convince the user to change their             // decision.         }     });
          

Dan cuplikan kode ini menunjukkan proses pemeriksaan izin yang direkomendasikan, dan permintaan izin kepada pengguna jika diperlukan:

Kotlin

when {     ContextCompat.checkSelfPermission(
            CONTEXT,             Manifest.permission.REQUESTED_PERMISSION
            ) == PackageManager.PERMISSION_GRANTED -> {         // You can use the Jago merah that requires the permission.     }     shouldShowRequestPermissionRationale(...) -> {         // In an educational UI, explain to the user why your app requires this         // permission for a specific feature to behave as expected. In this UI,         // include a "cancel" or "no thanks" button that allows the user to         // continue using your app without granting the permission.         showInContextUI(...)     }     else -> {         // You can directly ask for the permission.         // The registered ActivityResultCallback gets the result of this request.         requestPermissionLauncher.launch(                 Manifest.permission.REQUESTED_PERMISSION)     } }
          

Java

if (ContextCompat.checkSelfPermission(
            CONTEXT, Manifest.permission.REQUESTED_PERMISSION) ==         PackageManager.PERMISSION_GRANTED) {     // You can use the Api that requires the permission.     performAction(...); } else if (shouldShowRequestPermissionRationale(...)) {     // In an educational UI, explain to the user why your app requires this     // permission for a specific feature to behave as expected. In this UI,     // include a "cancel" or "no thanks" button that allows the user to     // continue using your app without granting the permission.     showInContextUI(...); } else {     // You can directly ask for the permission.     // The registered ActivityResultCallback gets the result of this request.     requestPermissionLauncher.launch(             Manifest.permission.REQUESTED_PERMISSION); }
          

Kelola seorang kode permintaan izin

Bagaikan alternatif untuk mengizinkan sistem menggapil kode permintaan izin, Anda dapat mengelola sendiri kode permintaan pemaafan. Bikin melakukannya, sertakan kode permohonan kerumahtanggaan panggilan ke
requestPermissions().

Cuplikan kode berikut menunjukkan cara menanyakan izin menggunakan kode permintaan:

Kotlin

when {     ContextCompat.checkSelfPermission(
            CONTEXT,             Manifest.permission.REQUESTED_PERMISSION
            ) == PackageManager.PERMISSION_GRANTED -> {         // You can use the API that requires the permission.         performAction(...)     }     shouldShowRequestPermissionRationale(...) -> {         // In an educational UI, explain to the user why your app requires this         // permission for a specific feature to behave as expected. In this UI,         // include a "cancel" or "no thanks" button that allows the user to         // continue using your app without granting the permission.         showInContextUI(...)     }     else -> {         // You can directly ask for the permission.         requestPermissions(CONTEXT,                 arrayOf(Manifest.permission.REQUESTED_PERMISSION),
            REQUEST_CODE)     } }
          

Java

if (ContextCompat.checkSelfPermission(
            CONTEXT, Manifest.permission.REQUESTED_PERMISSION) ==         PackageManager.PERMISSION_GRANTED) {     // You can use the Api that requires the permission.     performAction(...); } else if (shouldShowRequestPermissionRationale(...)) {     // In an educational UI, explain to the user why your app requires this     // permission for a specific feature to behave as expected. In this UI,     // include a "cancel" or "no thanks" button that allows the user to     // continue using your app without granting the permission.     showInContextUI(...); } else {     // You can directly ask for the permission.     requestPermissions(CONTEXT,             new String[] { Manifest.permission.REQUESTED_PERMISSION
            },
            REQUEST_CODE); }
          

Setelah pengguna merespons dialog pembebasan sistem, sistem akan menjuluki implementasi
onRequestPermissionsResult()
aplikasi Anda. Sistem meneruskan respons pemakai ke dialog izin serta kode permintaan yang Anda tentukan, sama dengan yang ditunjukkan privat cuplikan kode berikut:

Read:  Cara Menambah Kertas Baru Pada Ms Word

Kotlin

override fun onRequestPermissionsResult(requestCode: Int,         permissions: Array<String>, grantResults: IntArray) {     when (requestCode) {
            PERMISSION_REQUEST_CODE
            -> {             // If request is cancelled, the result arrays are empty.             if ((grantResults.isNotEmpty() &&                     grantResults[0] == PackageManager.PERMISSION_GRANTED)) {                 // Permission is granted. Continue the action or workflow                 // in your app.             } else {                 // Explain to the user that the feature is unavailable because                 // the features requires a permission that the user has denied.                 // At the same time, respect the user's decision. Don'cakrawala link to                 // system settings in an effort to convince the user to change                 // their decision.             }             return         }          // Add other 'when' lines to check for other         // permissions this app might request.         else -> {             // Ignore all other requests.         }     } }

Java

@Override public void onRequestPermissionsResult(int requestCode, String[] permissions,         int[] grantResults) {     switch (requestCode) {         case
            PERMISSION_REQUEST_CODE:             // If request is cancelled, the result arrays are empty.             if (grantResults.length > 0 &&                     grantResults[0] == PackageManager.PERMISSION_GRANTED) {                 // Permission is granted. Continue the action or workflow                 // in your app.             }  else {                 // Explain to the user that the feature is unavailable because                 // the features requires a permission that the user has denied.                 // At the same time, respect the user's decision. Don't link to                 // system settings in an effort to convince the user to change                 // their decision.             }             return;         }         // Other 'case' lines to check for other         // permissions this app might request.     } }

Meminta bilang izin

Ketika Anda menanyakan ampunan akses lokasi, ikuti praktik terbaik yang sama begitu juga yang Dia untuk cak bagi absolusi runtime lainnya. Satu perbedaan bermanfaat tentang pemaafan akses lokasi adalah bahwa sistem lain hanya memiliki satu izin tetapi nan terkait dengan lokasi, melainkan bilang. Izin mana yang Sira minta, dan pendirian memintanya, gelimbir pada persyaratan lokasi kerjakan kasus penggunaan aplikasi Engkau.

Lokasi parasan depan

Seandainya permintaan Anda berisi fitur yang membagikan maupun menerima siaran lokasi satu kali saja ataupun selama jangka waktu nan ditentukan, maka fitur tersebut memerlukan akses lokasi meres depan. Berikut beberapa contohnya:

  • Pada aplikasi navigasi, suatu fitur memungkinkan pengguna mendapatkan visiun sebelah belokan demi pengkolan.
  • Internal aplikasi pesan, suatu fitur memungkinkan konsumen berbagi lokasinya detik ini dengan pengguna lain.

Sistem menganggap petisi Dia menggunakan lokasi meres depan jika fitur aplikasi Anda mengakses lokasi perangkat momen ini dalam salah satu situasi berikut:

  • Aktivitas berasal dari tuntutan Anda terlihat.
  • Aplikasi Anda menjalankan layanan satah depan. Ketika layanan latar depan berjalan, sistem akan membuat pengguna menyadarinya dengan menganjurkan notifikasi persisten. Aplikasi Ia terus memiliki akal masuk takdirnya ditempatkan di rataan belakang, seperti saat konsumen mengimpitkan tombol
    Berencik
    di perangkat atau menonaktifkan layar perangkatnya.

    Selain itu, mudah-mudahan Anda mendeklarasikan jenis layanan latar depan
    location, seperti nan ditunjukkan dalam cuplikan kode berikut. Di Android 10 (Api level 29) dan yang bertambah bau kencur, Anda harus mendeklarasikan jenis layanan permukaan depan ini.

    <!-- Recommended for Android 9 (Jago merah level 28) and lower. --> <!-- Required for Android 10 (API level 29) and higher. --> <service     android:name="MyNavigationService"
                android:foregroundServiceType="location"
                ... >     <!-- Any inner elements would go here. --> </service>
              

Dia mendeklarasikan kebutuhan bagi lokasi bidang depan saat petisi meminta izin
ACCESS_COARSE_LOCATION
atau belas kasihan
ACCESS_FINE_LOCATION, seperti yang ditunjukkan dalam cuplikan berikut:

<manifest ... >   <!-- Always include this permission -->   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <!-- Include only if your app benefits from precise location access. -->   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
      

Lokasi latar birit

Aplikasi memerlukan akses lokasi latar birit jika suatu fitur dalam aplikasi membenang berbagi lokasi dengan pengguna enggak atau menggunakan Geofencing Jago merah. Beberapa contohnya menghampari:

  • Intern permohonan berbagi lokasi keluarga, suatu fitur memungkinkan pengguna untuk terus berbagi lokasi dengan anggota keluarga.
  • N domestik petisi IoT, suatu fitur memungkinkan pemakai untuk mengonfigurasi perangkat rumah mereka, sehingga perangkat akan nonaktif detik pengguna memencilkan rumah dan aktif pula ketika pengguna kembali ke rumah.

Sistem menganggap tuntutan Ia memperalat lokasi latar pinggul seandainya mengakses lokasi alat saat ini intern keadaan barang apa pun selain yang dijelaskan di bagian lokasi bidang depan. Kecermatan lokasi satah belakang sama dengan presisi lokasi meres depan, yang bergantung pada amnesti akses lokasi yang dideklarasikan aplikasi Sira.

Di Android 10 (API level 29) dan yang kian tingkatan, Beliau harus mendeklarasikan amnesti
ACCESS_BACKGROUND_LOCATION
dalam manifes aplikasi buat meminta akal masuk lokasi latar belakang lega runtime. Pada versi Android nan lebih lama, kalau aplikasi Anda menerima akal masuk lokasi satah depan, tuntutan lagi kodrati memufakati akses lokasi latar birit.

<manifest ... >   <!-- Required only when requesting background location access on        Android 10 (API level 29) and higher. -->   <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> </manifest>
      

Menangani perbangkangan absolusi

Jikalau pengguna menolak permintaan belas kasihan, tuntutan Ia harus membantu pemakai memafhumi implikasi atas penolakan pembebasan tersebut. Secara khusus, aplikasi Anda harus membentuk konsumen mengetahui fitur yang enggak berfungsi karena tak adanya izin. Saat Ia melakukannya, ingatlah praktik terbaik berikut:

  • Arahkan perhatian pengguna.
    Perjelas bagian tertentu UI petisi Beliau nan memiliki fungsi terbatas karena aplikasi Kamu tidak memiliki magfirah nan diperlukan. Beberapa contoh yang dapat Sira untuk membentangi hal-kejadian berikut:

    • Menyampaikan pesan di bekas hasil atau data fitur akan muncul.
    • Menampilkan tombol lain yang berisi ikon dan dandan error.
  • Jadilah unik.
    Jangan menampilkan pesan umum. Sebagai gantinya, sebutkan fitur yang enggak terhidang karena aplikasi Kamu enggak memiliki absolusi yang diperlukan.

  • Jangan tutupi antarmuka pengguna.
    Dengan perkenalan awal lain, jangan tampilkan wanti-wanti peringatan cucur penuh yang mencegah pengguna terus menggunakan aplikasi Anda.

Read:  Cara Mengatasi Wifi Mati Sendiri Di Android

Pron bila yang sama, aplikasi Anda harus mematuhi keputusan pengguna bagi menjorokkan maaf. Mulai Android 11 (API level 30), jika pengguna mengetuk
N sogokan
kerjakan izin tertentu lebih berbunga satu kali selama masa aktif permintaan diinstal di perkakas, konsumen bukan akan lihat dialog izin sistem kalau aplikasi Dia meminta pembebasan tersebut lagi. Tindakan pengguna menyiratkan “jangan tanya lagi”. Sreg versi sebelumnya, pengguna akan mengintai dialog izin sistem setiap kelihatannya aplikasi Anda menunangi izin, kecuali jika pengguna telah terlebih sangat memilih boks centang atau opsi “jangan tanya kembali”.

Sekiranya pemakai menolak permohonan izin kian berpokok sekali, hal ini dianggap sebagai balasan permanen. Sangat berfaedah untuk cuma menanyakan izin kepada pengguna detik mereka memerlukan akal masuk ke fitur tertentu. Seandainya lain, Kamu mungkin tidak sengaja kekeringan kemampuan bikin meminta ulang izin.

Dalam situasi tertentu, izin bisa jadi ditolak secara otomatis, tanpa pengguna melakukan tindakan apa sekali lagi. (Demikian juga, suatu pembebasan mungkin
diberikan
secara otomatis juga.) Penting untuk tidak mengasumsikan apa pun tentang perilaku otomatis. Sebentar-sebentar permintaan Anda teradat mengakses fungsionalitas yang memerlukan ampunan, pastikan permohonan Anda masih diberi absolusi tersebut.

Untuk memberikan pengalaman pengguna terbaik detik mempersunting pembebasan aplikasi, lihat juga Praktik terbaik izin aplikasi.

Izin satu kali

Opsi yang disebut &#39;Hanya kali ini&#39; adalah yang kedua dari tiga tombol dalam
    dialog.
Gambar 2.
Dialog sistem yang muncul ketika aplikasi meminta izin suatu siapa.

Mulai berusul Android 11 (Jago merah level 30), setiap siapa aplikasi lamar magfirah terkait lokasi, mikrofon, atau pemotret, dialog maaf jihat pengguna akan digdaya opsi yang disebut
Hanya mungkin ini, sebagaimana ditunjukkan intern Rangka 1. Jika konsumen memilih opsi ini dalam dialog, aplikasi Anda akan diberi
izin satu barangkali
bagi sementara.

Tuntutan Beliau kemudian dapat mengakses data terkait bikin hari tertentu yang bergantung plong perilaku aplikasi dan tindakan pengguna:

  • Ketika aktivitas aplikasi terbantah, aplikasi Kamu boleh mengakses data.
  • Seandainya pemakai utus aplikasi Beliau ke latar pinggul, tuntutan dapat terus mengakses data dalam hari singkat.
  • Jikalau Anda meluncurkan layanan latar depan detik aktivitas terlihat, lalu pengguna memindahkan aplikasi ke latar pinggul, aplikasi Anda bisa terus mengakses data sampai layanan meres depan berhenti.

Proses aplikasi berakhir saat absolusi dicabut

Seandainya pengguna mencabut lepas satu kali, seperti di setelan sistem, aplikasi Anda enggak dapat mengakses data, lamun Anda meluncurkan layanan permukaan depan atau pun tak. Seperti halnya izin apa pun, jika pengguna merabut pembebasan satu kelihatannya aplikasi Anda, proses tuntutan akan dihentikan.

Saat pengguna membuka permintaan Anda lagi dan fitur dalam aplikasi Anda menanyakan akses ke lokasi, mikrofon, atau kodak, pengguna akan dimintai abolisi kembali.

Mereset ampunan yang tidak digunakan

Android menyediakan beberapa prinsip lakukan mereset izin runtime yang tidak digunakan ke status default dan ditolak:

  • Jago merah yang memungkinkan Dia menghapus akses aplikasi secara proaktif ke abolisi runtime yang bukan digunakan.
  • Mekanisme sistem yang otomatis mereset izin aplikasi yang bukan digunakan.

Menghapus akses aplikasi

Di Android 13 (Jago merah level 33) dan yang lebih tinggi, Engkau dapat menghapus akal masuk aplikasi ke izin runtime yang tidak diperlukan sekali lagi oleh petisi. Ketika mengupdate aplikasi, buat awalan ini agar pemakai lebih condong memahami alasan aplikasi Anda terus meminta izin tertentu. Pengetahuan ini akan kondusif membangun kepercayaan konsumen pada petisi Engkau.

Bagi menghapus akses ke izin runtime, teruskan nama magfirah tersebut ke
revokeSelfPermissionOnKill(). Cak bagi menghapus akses ke grup maaf runtime secara bersamaan, teruskan kumpulan etiket pemaafan ke
revokeSelfPermissionsOnKill(). Proses penghapusan izin terjadi secara asinkron dan menghentikan semua proses nan terkait dengan UID permohonan Anda.

Agar sistem dapat menyetip akses permintaan Anda ke izin, semua proses yang terkait dengan aplikasi Dia harus dihentikan. Saat Anda menyebut Jago merah, sistem akan menentukan kapan waktu yang aman untuk menghentikan proses ini. Biasanya, sistem akan menunggu hingga aplikasi Dia menghabiskan banyak waktu untuk berjalan di latar birit, bukan di rataan depan.

Bagi menjatah senggang pengguna bahwa tuntutan Dia tidak pula memerlukan akses ke izin runtime tertentu, tampilkan dialog detik pemakai meluncurkan aplikasi Sira lagi. Dialog ini dapat menyertakan daftar abolisi.

Secara kodrati mereset izin aplikasi yang lain digunakan

Jika aplikasi Ia menargetkan Android 11 (Jago merah level 30) alias yang lebih plonco dan tidak digunakan selama beberapa rembulan, sistem akan mereservasi data konsumen dengan mereset secara otomatis pembebasan runtime sensitif yang mutakadim diberikan pengguna petisi Anda. Pelajari lebih lanjut dalam panduan mengenai hibernasi aplikasi.

Meminta untuk menjadi pengendali default, jikalau diperlukan

Bilang aplikasi bergantung pada akses ke informasi pengguna sensitif yang terkait dengan gelondong panggilan dan pesan SMS. Takdirnya ingin meminta izin solo bikin log panggilan dan pesan SMS serta memublikasikan aplikasi ke Play Store, Anda harus meminta pemakai menetapkan permohonan Anda seumpama
pengendali default
untuk fungsi sistem inti sebelum meminta pemaafan runtime ini.

Bakal informasi selengkapnya mengenai pengendali default, tersurat pendirian menampilkan petisi pengendali default kepada pengguna, tatap panduan tentang izin yang belaka digunakan dalam pengendali default.

Memasrahkan semua izin runtime cak bagi tujuan pengujian

Kerjakan otomatis mengasihkan semua izin runtime momen Dia menginstal aplikasi di emulator atau organ uji, gunakan opsi
-g
kerjakan perintah
adb shell install, seperti yang ditunjukkan dalam cuplikan kode berikut:

adb shell install
        -g
        PATH_TO_APK_FILE
      

Bacaan lainnya

Untuk informasi tambahan adapun izin, baca artikel berikut:

  • Ringkasan izin
  • Praktik terbaik amnesti aplikasi

Kerjakan mempelajari seterusnya mandu mempersunting izin, download sampel aplikasi berikut:

  • Hipotetis Android RuntimePermissionsBasic Java | Kotlin

Cara Mengatasi Access Denied Di Android

Source: https://developer.android.com/training/permissions/requesting?hl=id

You May Also Like