谷歌Android开发者博客今天发文称为数十亿台设备提供权限自动重置功能

来源:IT之家 2022-02-19 02:15:30  阅读量:13797   

,谷歌 Android 开发者博客今天发文称,为数十亿台设备提供权限自动重置功能。

谷歌Android开发者博客今天发文称为数十亿台设备提供权限自动重置功能

应用通常需要请求某些权限才能正常运行,但在任何给定的设备都有数十个应用的情况下,要让之前授予的权限保持最新状态可能很困难,特别是在你长时间未使用某个应用时。移除了几个已弃用的BouncyCastle加密算法,取而代之的是Conscrypt版本。如果您的应用程序使用带有AES的512位密钥,则您需要使用Conscrypt支持的标准大小之一。

谷歌称,在 Android 11 中引入了权限自动重置功能这项功能有助于保护用户的隐私: 如果用户几个月未使用某应用,该功能就会自动重置此应用的运行时权限,即请求时向用户显示提示的权限2021 年 12 月起,谷歌会将这项功能扩展到数十亿台设备该功能将自动在运行 Android 6.0 或更高版本的使用 Google Play 服务的设备上启用

权限自动重置功能

运行时权限

Google Play 服务

系统将默认为面向 Android 11 或更高版本的应用启用该功能不过,用户可以为面向 API 级别 23 到 29 的应用手动启用权限自动重置功能

那么,这对开发者来说意味着什么呢。

例外

一些应用和权限将自动免于撤消,如企业使用的活动设备管理员应用,以及由企业政策固定的权限。

请求用户停用自动重置

如有需要,开发者可以请求用户阻止系统重置其应用的权限适用于用户期望应用主要在后台运行,甚至无需与其互动的情况

比较当前行为与新行为

必要的代码更改

如果一个应用面向 API 30 及更高版本,并请求用户停用权限自动重置,那么开发者需要做一些简单的代码更改如果应用不停用自动重置,则无需进行代码更改

注:此 API 仅适用于 targetSDK 为 API 30 或更高版本的应用,因为仅这些应用具有权限自动重置如果应用的 targetSDK 为 API 29 或更低版本,则开发者无需进行任何更改

下表汇总了新的跨平台 API :

Android 11

PackageManager.isAutoRevokeWhitelisted

Intent.ACTION_AUTO_REVOKE_PERMISSIONS

这个跨平台 API 属于 Jetpack Core 库,将于 Jetpack Core v1.7.0 中推出,现已发布 Beta 版:

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

valfuture:ListenableFuturelt,Intgt,=PackageManagerCompat.getUnusedAppRestrictionsStatusfuture.addListener),ContextCompat.getMainExecutor)funonResult(RestrictionsStatus:Int)when(RestrictionsStatus)//Statuscouldnotbefetched.Checklogsfordetails.ERROR—gt,//Restrictionsdonotlytoyouronthisdevice.FEATURE_NOT_AVAILABLE—gt,//Restrictionshavebeendisabledbytheuserforyour.DISABLED—gt,//Iftheuserdoesn'tstartyourformonths,itspermissions//willberevokedand/oritwillbehibernated.//SeetheAPI_*constantsfordetails.API_30_BACKPORT,API_30,API_31—gt,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 10,以及 Android 11 和更高版本的设备只需使用新 API 即可,您无需再调用 Android 11 的自动重置 API

与 Android 12 中应用休眠功能的兼容

新 API 同样与 Android 12 中引入的应用休眠功能兼容休眠是适用于未使用应用的一种新限制该功能不适用于 Android 12 之前的操作系统版本

Android 12 中引入的应用休眠功能

如果权限自动重置和应用休眠都应用于一个应用,则 getUnusedAppRestrictionsStatus API 将返回 API_31。。

发布时间表

2021 年 9 月 15 日 — 跨平台自动重置 API 现已进入测试阶段 ,所以开发者现在就可以开始使用这些 API即使在不支持权限自动重置的设备上,使用这些 API 也是安全的 (API 在这些设备上会返回 FEATURE_NOT_AVAILABLE)

2021 年 10 月 — 跨平台自动重置 API 可作为稳定的 API 使用 。

2021 年 12 月 — 权限自动重置功能将开始在由 Google Play 服务提供支持并运行 Android 6.0 到 Android 10 之间版本的设备上逐步推广在这些设备上,用户可以前往自动重置设置页面,针对特定应用启用/停用自动重置系统将在设备启用该功能几周后开始自动重置未使用应用的权限

2022 年第 1 季度 — 权限自动重置功能将覆盖所有运行 Android 6.0 到 Android 10 之间版本的设备。

声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。

猜你喜欢

300

热门文章