以下分析,基于aosp14
android对未使用的应用,长时间不使用时,会回收权限。
这个长时间,是多长时间呢,搜了下,默认是90天。
题外话:我需要找到授权使用定时回收的api。即 今天授权定位权限,30天后,不管应用是否使用,都要回收。目前没有找到相关功能。额外发现了此处的重置权限的策略。
重置运行时权限
android/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
//默认重置时间是90天
private val DEFAULT_UNUSED_THRESHOLD_MS = TimeUnit.DAYS.toMillis(90)
持久化位置如下
File dir = new File(Environment.getDataSystemDirectory(), HIBERNATION_DIR_NAME);
android/frameworks/base/services/core/java/com/android/server/apphibernation/AppHibernationService.java
System service that manages app hibernation state, a state apps can enter that means they are not being actively used and can be optimized for storage.
The actual policy for determining if an app should hibernate is managed by PermissionController code.
管理应用休眠状态的系统服务。该状态表示应用未被主动使用,并可针对存储进行优化。判断应用是否应休眠的实际策略由PermissionController代码管理。
谷歌官网资料:
https://developer.android.google.cn/training/permissions/requesting?hl=zh-cn#auto-reset-permissions-unused-apps
自动重置未使用权限
https://developer.android.google.cn/training/permissions/requesting?hl=zh-cn#reset-unused-permissions
https://www.cnblogs.com/kato-T/p/18332568
addAutoRevokePreferences