The Android Developer Challenge is back! Submit your idea before December 2.

Meminta izin di Wear OS

Android 6.0 (API level 23) memperkenalkan model izin baru, yang menghadirkan beberapa perubahan khusus untuk Wear OS by Google, dan perubahan lain yang berlaku untuk semua perangkat yang didukung Android.

Pengguna harus memberikan izin ke aplikasi Wear meskipun ada aplikasi telepon pendamping. Mulai Android 6.0 (API level 23), aplikasi Wear tidak dapat menerima izin yang diberikan di aplikasi telepon. Misalnya, jika pengguna memberikan izin ke aplikasi telepon untuk menggunakan data lokasi, pengguna aplikasi Wear harus memberikan izin yang sama.

Catatan: Halaman ini mengasumsikan kemungkinan bahwa Anda membuat aplikasi telepon sebagai pendamping aplikasi jam tangan Anda. Namun, Anda tidak perlu membuat aplikasi telepon; aplikasi jam tangan Anda dapat menjadi aplikasi yang berdiri sendiri.

Untuk aplikasi Wear dan telepon, model izin Android 6.0 (API level 23) juga menyederhanakan penginstalan dan upgrade aplikasi dengan menghilangkan persyaratan bahwa pengguna harus memberikan izin di awal untuk setiap izin yang mungkin diperlukan aplikasi. Sebagai gantinya, aplikasi tidak meminta izin hingga benar-benar memerlukannya.

Catatan: Agar aplikasi dapat menggunakan model izin baru, aplikasi harus menentukan nilai 23 untuk uses-sdk-element dan compileSdkVersion.

Bagian lain dari dokumen ini membahas cara menggunakan model izin Android 6.0 (API level 23) ketika mengembangkan aplikasi Wear OS.

Skenario izin

Secara garis besar, ada empat skenario yang mungkin Anda hadapi ketika meminta izin berbahaya di Wear OS:

  • Aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable.
  • Aplikasi Wear meminta izin untuk aplikasi yang berjalan di handset.
  • Aplikasi telepon meminta izin untuk aplikasi yang berjalan di perangkat wearable.
  • Aplikasi wearable menggunakan model izin yang berbeda dari pasangan ponselnya.

Bagian lain dokumen ini menjelaskan masing-masing skenario ini. Untuk informasi lebih detail tentang permintaan izin, lihat Pola permintaan izin.

Aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable

Ketika aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable, sistem akan menampilkan dialog untuk meminta persetujuan pengguna mengenai izin tersebut. Aplikasi atau layanan hanya dapat memanggil metode requestPermissions() dari suatu aktivitas. Jika pengguna berinteraksi dengan aplikasi Anda melalui layanan, seperti tampilan jam, layanan harus membuka aktivitas sebelum meminta izin.

Aplikasi Anda meminta izin dalam konteks ketika jelas bahwa izin tersebut diperlukan untuk melakukan operasi tertentu. Jika sudah jelas bahwa aplikasi Anda memerlukan izin tertentu, aplikasi dapat memintanya saat diluncurkan. Jika tidak terlalu jelas, Anda dapat memilih untuk memberikan edukasi kepada pengguna sebelum meminta izin.

Jika aplikasi atau tampilan jam memerlukan lebih dari satu izin dalam satu waktu, permintaan izin akan muncul satu demi satu.

Beberapa layar izin, satu demi satu.

Gambar 1. Layar izin muncul secara bergantian.

Catatan: Mulai Android 6.0 (API level 23), Wear OS otomatis menyinkronkan data Kalender, Kontak, dan Lokasi ke perangkat Wear. Akibatnya, skenario ini akan diterapkan ketika Wear meminta data ini.

Aplikasi Wear meminta izin ponsel

Ketika aplikasi Wear meminta izin ponsel, aplikasi tersebut harus mengarahkan pengguna ke ponsel untuk menerima izin. Di sana, aplikasi telepon dapat memberikan edukasi tambahan kepada pengguna melalui suatu aktivitas. Aktivitas ini harus berisi dua tombol: satu untuk memberikan izin, dan satu untuk menolaknya.

Aplikasi Wear mengarahkan pengguna ke ponsel untuk memberikan izin.

Gambar 2. Mengarahkan pengguna ke ponsel untuk memberikan izin.

Aplikasi telepon meminta izin perangkat wearable

Ketika pengguna menggunakan aplikasi telepon dan aplikasi memerlukan izin perangkat wearable, aplikasi telepon harus mengarahkan pengguna ke perangkat wearable untuk menerima izin. Aplikasi telepon menggunakan metode requestPermissions() pada perangkat wearable untuk memicu dialog izin sistem.

Aplikasi telepon mengarahkan pengguna ke perangkat wearable untuk memberikan izin.

Gambar 3. Mengarahkan pengguna ke perangkat wearable untuk memberikan izin.

Ketidakcocokan model izin antara aplikasi telepon dan wearable

Jika aplikasi telepon Anda menggunakan model Android 6.0 (API level 23) tetapi aplikasi wearable tidak menggunakannya, sistem akan mendownload aplikasi Wear, tetapi tidak menginstalnya. Saat pengguna meluncurkan aplikasi pertama kali, sistem akan meminta pengguna untuk memberikan semua izin yang tertunda. Setelah diizinkan, sistem akan menginstal aplikasi. Jika aplikasi Anda, misalnya tampilan jam, tidak memiliki peluncur, sistem akan menampilkan deretan notifikasi yang meminta pengguna untuk memberikan izin yang diperlukan aplikasi.

Pola permintaan izin

Ada berbagai pola untuk meminta izin dari pengguna. Menurut urutan prioritas, yaitu:

  • Tanya dalam konteks ketika izin jelas diperlukan untuk fungsionalitas tertentu, tetapi tidak diperlukan untuk menjalankan aplikasi.
  • Edukasi dalam konteks ketika alasan untuk meminta izin tidak terlalu jelas, dan izin tidak diperlukan untuk menjalankan aplikasi.
  • Tanya di awal ketika alasan diperlukannya izin sudah jelas, dan izin diperlukan agar aplikasi dapat berjalan.
  • Edukasi di awal ketika alasan diperlukannya izin tidak terlalu jelas, tetapi izin diperlukan agar aplikasi dapat berjalan.

Tanya dalam konteks

Aplikasi Anda sebaiknya meminta izin jika sudah jelas mengapa izin tersebut diperlukan untuk melakukan operasi tertentu. Pengguna kemungkinan besar memberikan izin ketika mereka memahami hubungannya dengan fitur yang ingin mereka gunakan.

Misalnya, aplikasi mungkin memerlukan lokasi pengguna untuk menunjukkan tempat menarik di sekitar. Ketika pengguna mengetuk layar untuk menelusuri tempat di sekitar, aplikasi dapat segera meminta izin lokasi, karena ada hubungan yang jelas antara menelusuri tempat di sekitar dan diperlukannya izin lokasi. Jelasnya hubungan ini membuat aplikasi tidak perlu lagi menampilkan layar edukasi tambahan.

Aplikasi meminta izin ketika jelas diperlukan.

Gambar 4. Tanya dalam konteks.

Edukasi dalam konteks

Jika diperlukan, Anda dapat memilih untuk memberikan edukasi tambahan sebelum meminta izin. Sekali lagi, aplikasi Anda harus melakukan ini dalam konteks tindakan tertentu, jika tidak jelas mengapa aplikasi Anda memerlukan akses ke izin yang diminta untuk menyelesaikan tindakan tersebut.

Gambar 5 menunjukkan contoh edukasi dalam konteks. Aplikasi ini tidak memerlukan izin untuk memulai timer, tetapi tanda edukasi inline menunjukkan bahwa ada sebagian aktivitas (deteksi lokasi) yang terkunci. Ketika pengguna mengetuk tanda tersebut, layar permintaan izin akan muncul, sehingga pengguna dapat membuka kunci deteksi lokasi.

Anda dapat menggunakan metode shouldShowRequestPermissionRationale() untuk membantu aplikasi memutuskan apakah akan memberikan informasi selengkapnya. Untuk detail selengkapnya, lihat Meminta Izin Pada Waktu Proses.

Ketika kebutuhan izin muncul, aplikasi menjelaskan mengapa izin diperlukan.

Gambar 5. Edukasi dalam konteks.

Tanya di awal

Jika aplikasi Anda jelas memerlukan izin agar dapat berfungsi, Anda dapat meminta izin tersebut ketika pengguna meluncurkan aplikasi. Misalnya, aplikasi peta jelas memerlukan akses ke lokasi perangkat untuk menjalankan aktivitas yang diinginkan. Tidak diperlukan edukasi lebih lanjut untuk izin ini.

Jika aplikasi jelas memerlukan izin untuk berjalan, aplikasi dapat langsung memintanya saat diluncurkan.

Gambar 6. Tanya di awal.

Edukasi di awal

Dalam beberapa kasus, aplikasi memerlukan izin untuk fungsi dasar, tetapi alasan diperlukannya izin tersebut tidak terlalu jelas. Dalam kasus ini, ketika pengguna pertama kali memulai aplikasi atau menyetel tampilan jam, aplikasi atau tampilan jam dapat memilih untuk mengedukasi pengguna dan meminta izin.

Ketika meminta izin saat peluncuran, aplikasi dapat menjelaskan alasan diperlukannya izin tersebut.

Gambar 7. Edukasi di awal.

Menangani penolakan

Jika seorang pengguna menolak permintaan izin yang tidak penting untuk aktivitas yang dimaksudkan, jangan menghalanginya untuk melanjutkan aktivitas. Jika bagian tertentu dari aktivitas tersebut dinonaktifkan karena permintaan izin yang ditolak, berikan masukan visual yang dapat ditindaklanjuti. Gambar 8 menunjukkan penggunaan ikon gembok untuk menunjukkan bahwa fitur tersebut dikunci karena pengguna tidak memberikan izin untuk menggunakannya.

Ketika pengguna menolak izin, ikon gembok akan ditampilkan bersama dengan fitur terkait.

Gambar 8. Ikon gembok, menunjukkan fitur yang terkunci karena permintaan izin ditolak.

Ketika dialog izin perangkat wearable yang sebelumnya ditolak muncul untuk kedua kalinya, dialog akan berisi opsi Tolak, jangan tampilkan lagi. Jika pengguna memilih opsi ini, satu-satunya cara bagi mereka untuk mengizinkan permintaan izin ini di masa mendatang adalah membuka aplikasi Setelan perangkat wearable.

Penawaran sistem untuk berhenti meminta izin.

Gambar 9. Penawaran untuk tidak menampilkan layar permintaan izin lagi.

Izin untuk layanan

Seperti yang disebutkan di atas, hanya aktivitas yang dapat memanggil metode requestPermissions(), jadi jika pengguna berinteraksi dengan aplikasi Anda melalui layanan, misalnya tampilan jam, layanan tersebut harus membuka aktivitas latar belakang sebelum meminta izin. Aktivitas ini dapat memberikan edukasi tambahan, atau dapat berupa aktivitas tidak terlihat yang memunculkan dialog sistem.

Jika aplikasi wearable Anda menjalankan layanan yang bukan merupakan tampilan jam, dan pengguna tidak meluncurkan aplikasi yang memungkinkan untuk meminta izin, Anda dapat memposting notifikasi edukasi pada perangkat wearable. Notifikasi tersebut dapat menyediakan tindakan untuk membuka aktivitas yang kemudian memicu dialog izin sistem.

Catatan: Ini adalah satu-satunya penggunaan deretan notifikasi yang dapat diterima untuk permintaan izin.

Pengguna mungkin harus memberikan izin ketika secara tidak langsung berinteraksi dengan aplikasi, melalui layanan.

Gambar 10. Layanan meminta izin.

Setelan

Seperti ponsel, pengguna dapat mengubah izin aplikasi Wear di Setelan kapan saja. Oleh karena itu, saat pengguna mencoba melakukan sesuatu yang memerlukan izin, aplikasi harus terlebih dahulu memanggil metode checkSelfPermission() untuk melihat apakah aplikasi tersebut memiliki izin untuk melakukan operasi ini. Aplikasi harus melakukan pemeriksaan ini meskipun mengetahui bahwa sebelumnya pengguna telah memberikan izin tersebut, dikarenakan pengguna mungkin telah mencabut izin tersebut.

Pengguna dapat mengubah izin melalui aplikasi Setelan.

Gambar 11. Mengubah setelan melalui aplikasi Setelan.