Diposting oleh Peter Visontay, Software Engineer; Bessie Jiang, Software Engineer
Kontributor: Inara Ramji, Software Engineer; Rodrigo Farell, Interaction Designer; James Kelly, Product Manager; Henry Chin, Program Manager.
Banyak pengguna menghabiskan waktu di smartphone mereka. Baik untuk bekerja, bermain game, atau terhubung dengan teman, orang sering menggunakan aplikasi sebagai gateway utama kehidupan digitalnya. Agar berfungsi, aplikasi sering kali perlu meminta izin tertentu, tetapi dengan banyaknya aplikasi pada sebuah perangkat, tidaklah mudah selalu mengontrol izin yang telah Anda berikan sebelumnya – terutama jika Anda sudah lama tidak menggunakan aplikasi.
Di Android 11, kami memperkenalkan fitur reset otomatis izin. Fitur ini membantu melindungi privasi pengguna dengan mereset izin runtime aplikasi secara otomatis – yaitu izin yang menampilkan peringatan kepada pengguna saat diminta – jika aplikasi tidak digunakan selama beberapa bulan. Mulai Desember 2021, kami memperluasnya ke miliaran perangkat lainnya. Fitur ini akan diaktifkan secara otomatis di perangkat dengan layanan Google Play yang menjalankan Android 6.0 (API level 23) atau yang lebih tinggi.
Fitur ini akan diaktifkan secara default untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi. Namun, pengguna bisa mengaktifkan reset otomatis izin secara manual untuk aplikasi yang menargetkan API level 23 hingga 29.
Jadi apa artinya ini bagi developer?
Beberapa aplikasi dan izin secara otomatis dikecualikan dari pembatalan, seperti aplikasi Device Administrator aktif yang digunakan oleh perusahaan, dan izin yang ditetapkan oleh kebijakan perusahaan.
Jika diperlukan, developer bisa meminta pengguna untuk mencegah sistem mereset izin aplikasi mereka. Ini berguna dalam situasi ketika pengguna menginginkan aplikasi bekerja di latar belakang, tanpa berinteraksi dengannya. Kasus penggunaan utama tercantum di sini.
Jika aplikasi menargetkan setidaknya API 30, dan meminta pengguna untuk menonaktifkan reset otomatis izin, maka developer perlu melakukan beberapa perubahan kode sederhana. Jika aplikasi tidak menonaktifkan reset otomatis, maka tidak diperlukan perubahan kode.
Catatan: API ini hanya ditujukan untuk aplikasi yang targetSDK-nya adalah API 30 atau yang lebih tinggi, karena reset otomatis izin hanya berlaku untuk aplikasi ini secara default. Developer tidak perlu mengubah apa pun jika targetSDK aplikasi adalah API 29 atau lebih rendah.
Tabel di bawah ini merangkum API lintas platform baru (dibandingkan dengan API yang dipublikasikan di Android 11):
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
androidx.core.content.PackageManagerCompat.getUnusedAppRestrictionsStatus()
PackageManager.isAutoRevokeWhitelisted()
Intent.ACTION_AUTO_REVOKE_PERMISSIONS
androidx.core.content.IntentCompat.createManageUnusedAppRestrictionsIntent()
API lintas platform ini adalah bagian dari library Jetpack Core, dan akan tersedia di Jetpack Core v1.7.0. API ini sekarang tersedia dalam versi beta.
Contoh logika untuk aplikasi yang mengharuskan pengguna menonaktifkan reset otomatis:
val future: ListenableFuture<Int> = PackageManagerCompat.getUnusedAppRestrictionsStatus(context) future.addListener( { onResult(future.get()) }, ContextCompat.getMainExecutor(context) ) fun onResult(appRestrictionsStatus: Int) { when (appRestrictionsStatus) { // Status could not be fetched. Check logs for details. ERROR -> { } // Restrictions do not apply to your app on this device. FEATURE_NOT_AVAILABLE -> { } // Restrictions have been disabled by the user for your app. DISABLED -> { } // If the user doesn't start your app for months, its permissions // will be revoked and/or it will be hibernated. // See the API_* constants for details. API_30_BACKPORT, API_30, API_31 -> handleRestrictions(appRestrictionsStatus) } } fun handleRestrictions(appRestrictionsStatus: Int) { // If your app works primarily in the background, you can ask the user // to disable these restrictions. Check if you have already asked the // user to disable these restrictions. If not, you can show a message to // the user explaining why permission auto-reset and Hibernation should be // disabled. Tell them that they will now be redirected to a page where // they can disable these features. Intent intent = IntentCompat.createManageUnusedAppRestrictionsIntent (context, packageName) // Must use startActivityForResult(), not startActivity(), even if // you don't use the result code returned in onActivityResult(). startActivityForResult(intent, REQUEST_CODE) }
Logika di atas akan berfungsi di perangkat Android 6.0 – Android 10 dan juga Android 11+. Menggunakan API baru saja sudah cukup; Anda tidak perlu lagi memanggil API reset otomatis Android 11.
API baru ini juga kompatibel dengan hibernasi aplikasi yang diperkenalkan dalam Android 12 (API level 31). Hibernasi adalah batasan baru yang diterapkan pada aplikasi yang tidak digunakan. Fitur ini tidak tersedia pada versi OS sebelum Android 12.
API getUnusedAppRestrictionsStatus() akan menunjukkan API_31 apakah reset otomatis izin dan hibernasi aplikasi diterapkan pada aplikasi.
getUnusedAppRestrictionsStatus()
API_31
No comments :
Post a Comment