谷歌:12 月起,数十亿台安卓手机等支持权限自动重置,包括 Android 6.0~11

10 月 20 日消息,google 开辟者博客本日发文称,为数十亿台装备供应权限自动重置功效。

使用平时需求要求某些权限才气平常运行,但在职何给定的装备都稀有十个使用的环境下,要让之前付与的权限连结非常新状况可能非常难题,分外是在你长时间未使用某个使用时。

google称,在 中引入了权限自动重置功效。这项功效有助于保护用户的隐衷: 若用户几个月未使用某使用,该功效就会自动重置此使用的运行时权限,即要求时向用户表现提示的权限。2021 年 12 月起,google会将这项功效扩大到数十亿台装备。该功效将自动在运行 Android 6.0 (API 级别 23) 或更高版本的使用 Google Play 服无的装备上启用。

权限自动重置功效

运行时权限

Google Play 服无

体系将默许为面向 Android 11 (API 级别 30) 或更高版本的使用启用该功效。但是,用户能够为面向 API 级别 23 到 29 的使用手动启用权限自动重置功效。

辣么,这对开辟者来说意味着甚么呢?

少许使用和权限将自动免于撤消,如企业使用的举止装备经管员使用,以及由企业政策固定的权限。

要求用户停用自动重置

如有需求,开辟者能够要求用户制止体系重置其使用的权限。适用于用户冀望使用要紧在背景运行,乃至无需与其互动的环境。您能够稽查要紧用例:

相对目前行为与新行为

须要的代码变动

若一个使用面向 API 30 及更高版本,并要求用户停用权限自动重置,辣么开辟者需求做少许简略的代码变动。若使用不停用自动重置,则无需举行代码变动。

注:此 API 仅适用于 targetSDK 为 API 30 或更高版本的使用,由于仅这些使用具有权限自动重置。若使用的 targetSDK 为 API 29 或更低版本,则开辟者无需举行任何变动。

下表汇总了新的跨领域 API (与 Android 11 中公布的 API 比拟):

Android 11

PackageManager.isAutoRevokeWhitelisted()

Intent.ACTION_AUTO_REVOKE_PERMISSIONS

这个跨领域 API 属于 Jetpack Core 库,将于 Jetpack Core v1.7.0 中推出,现已公布 Beta 版:

一个需求用户禁用自动停用自动重置的逻辑示例:

valfuture:ListenableFuture<Int>=PackageManagerCompat.getUnusedAppRestrictionsStatus(context)future.addListener({onResult(future.get())},ContextCompat.getMainExecutor(context))funonResult(RestrictionsStatus:Int){when(RestrictionsStatus){//Statuscouldnotbefetched.Checklogsfordetails.ERROR->{}//Restrictionsdonotlytoyouronthisdevice.FEATURE_NOT_AVAILABLE->{}//Restrictionshavebeendisabledbytheuserforyour.DISABLED->{}//Iftheuserdoesn'tstartyourformonths,itspermissions//willberevokedand/oritwillbehibernated.//SeetheAPI_*constantsfordetails.API_30_BACKPORT,API_30,API_31->handleRestrictions(RestrictionsStatus)}}funhandleRestrictions(RestrictionsStatus:Int){//Ifyourworksprimarilyinthebackground,youcanasktheuser//todisabletheserestrictions.Checkifyouhavealreadyaskedthe//usertodisabletheserestrictions.Ifnot,youcanshowamessageto//theuserexplainingwhypermissionauto-resetandHibernationshouldbe//disabled.Tellthemthattheywillnowberedirectedtoapagewhere//theycandisablethesefeatures.Intentintent=IntentCompat.createManageUnusedAppRestrictionsIntent(context,packageName)//MustusestartActivityForResult(),notstartActivity(),evenif//youdon'tusetheresultcodereturnedinonActivityResult().startActivityForResult(intent,REQUEST_CODE)}

中文国外得悉,以上逻辑适用于 Android 6.0 到 ,以及 Android 11 和更高版本的装备。只需使用新 API 即可,您无需再挪用 Android 11 的自动重置 API。

与 中使用休眠功效的兼容

新 API 一样与 Android 12 (API 级别 31) 中引入的使用休眠功效兼容。休眠是适用于未使用使用的一种新限制。该功效不适用于 Android 12 之前的操纵体系版本。

Android 12 (API 级别 31) 中引入的使用休眠功效

若权限自动重置和使用休眠都使用于一个使用,则 getUnusedAppRestrictionsStatus () API 将回笼 API_31。

公布时间表

2021 年 9 月 15 日 - 跨领域自动重置 API 现已进入测试阶段 (Jetpack Core 1.7.0 Beta 版库),因此开辟者现在便首先使用这些 API。即使在不支撑权限自动重置的装备上,使用这些 API 也是安全的 (API 在这些装备上会回笼 FEATURE_NOT_AVAILABLE)。

2021 年 10 月 - 跨领域自动重置 API 可作为巩固的 API 使用 (Jetpack Core 1.7.0)。

2021 年 12 月 - 权限自动重置功效将首先在由 Google Play 服无供应支撑并运行 Android 6.0 到 Android 10 之间版本的装备上慢慢推行。在这些装备上,用户能够前去自动重置配置页面,针对特定使用启用/停用自动重置。体系将在装备启用该功效几周后首先自动重置未使用使用的权限。

2022 年第 1 季度 - 权限自动重置功效将笼盖全部运行 Android 6.0 到 Android 10 之间版本的装备。

您可能还会对下面的文章感兴趣: