Menyediakan reset otomatis izin untuk miliaran perangkat lainnya
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?
Pengecualian
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.
Meminta pengguna untuk menonaktifkan reset otomatis
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 .
Membandingkan perilaku sekarang dan perilaku baru
Perilaku sekarang
Perilaku baru
Izin direset secara otomatis di perangkat Android 11 (API level 30) dan yang lebih tinggi .
Izin direset secara otomatis di perangkat berikut:
Perangkat dengan layanan Google Play yang menjalankan versi Android 6.0 (API level 23) hingga Android 10 (API level 29) , inklusif.
Semua perangkat yang menjalankan Android 11 (API level 30) dan perangkat yang lebih tinggi .
Izin direset secara default untuk aplikasi yang menargetkan Android 11 atau lebih baru. Pengguna bisa mengaktifkan reset otomatis secara manual untuk aplikasi yang menargetkan Android 6.0 (API level 23) atau yang lebih baru.
Tidak ada perubahan dari perilaku sekarang.
Aplikasi bisa meminta pengguna untuk menonaktifkan reset otomatis untuk aplikasi.
Tidak ada perubahan dari perilaku sekarang.
Perubahan kode yang diperlukan
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 ):
Tindakan
API Android 11 (hanya berfungsi di perangkat Android 11 dan perangkat yang lebih baru)
API lintas platform baru (berfungsi di perangkat Android 6.0 dan yang lebih baru, termasuk perangkat Android 11 dan yang lebih baru)
Periksa apakah reset otomatis izin diaktifkan di perangkat
Periksa apakah Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
Panggil androidx.core.content.PackageManagerCompat.getUnusedAppRestrictionsStatus()
Periksa apakah reset otomatis dinonaktifkan untuk aplikasi Anda
Panggil PackageManager. isAutoRevokeWhitelisted()
Panggil androidx.core.content. PackageManagerCompat. getUnusedAppRestrictionsStatus()
Minta agar pengguna menonaktifkan reset otomatis untuk aplikasi Anda
Kirim intent bersama tindakan Intent.ACTION_AUTO_REVOKE_PERMISSIONS
Kirim intent yang dibuat dengan 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.
Kompatibilitas dengan Hibernasi Aplikasi di Android 12
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.
Lini Masa Peluncuran
15 September 2021 - API reset otomatis lintas platform sekarang dalam versi beta (library beta Jetpack Core 1.7.0), sehingga developer bisa mulai menggunakan API ini sekarang. Penggunaannya aman bahkan di perangkat yang tidak mendukung reset otomatis izin (API akan menampilkan FEATURE_NOT_AVAILABLE di perangkat ini).
Oktober 2021 - API reset otomatis lintas platform tersedia sebagai API stabil (Jetpack Core 1.7.0).
Desember 2021 - Fitur reset otomatis izin akan memulai peluncuran bertahap ke seluruh perangkat yang didukung Layanan Google Play yang menjalankan versi Android 6.0 hingga Android 10. Di perangkat ini, pengguna sekarang bisa membuka halaman setelan reset otomatis dan mengaktifkan/menonaktifkan reset otomatis untuk aplikasi tertentu. Sistem akan mulai mereset izin aplikasi yang tidak digunakan secara otomatis beberapa minggu setelah fitur diluncurkan di perangkat.
Q1 2022 - Fitur reset otomatis izin akan menjangkau semua perangkat yang menjalankan versi Android 6.0 hingga Android 10.
The fusion of blockchain and artificial intelligence (AI) is on the horizon, promising dynamic and adaptive gaming experiences. AI algorithms, powered by blockchain data, can personalize gameplay, create dynamic storylines, and even enhance in-game decision-making. This synergy opens avenues for games that evolve in real-time based on player interactions and preferences. Read more - https://ejaw.net/blockchain-game-development/ here.
ReplyDeleteQuantum Computing: Shaping the Unthinkable
Looking further into the future, the potential integration of quantum computing holds transformative implications for blockchain game development. Quantum computing's unparalleled processing power could revolutionize the scalability and security of blockchain networks, paving the way for even more complex and immersive gaming experiences.
Hello, everyone! After buying a new air conditioner, I needed to find a reliable service to install it. I accidentally came across the website https://serviceservotech.com/air-conditioning/ac-repair-installation/. The site is very user-friendly and intuitive. I left a request, and in a few hours the masters contacted me. They offered several installation options and told me about all the bonuses and promotions that were available. The installation went quickly and without any problems. Now the apartment is always at a comfortable temperature. I am very pleased with the service and will definitely recommend this site to my friends.
ReplyDelete