В UsageStatsService
существует метод hasPermission
[1], который проверяет, разрешено ли разрешение PACKAGE_USAGE_STATS
. Он используется в данных методах:
queryEvents
[2]
queryConfigurations
[3]
queryUsageStats
[4]
queryAndAggregateUsageStats
(он использует тот же метод queryUsageStats
)
Это код isAppInactive
[5], и вы можете видеть, как разрешение не запрашивается:
@Override
public boolean isAppInactive(String packageName, int userId) {
try {
userId = ActivityManagerNative.getDefault().handleIncomingUser(Binder.getCallingPid(),
Binder.getCallingUid(), userId, false, true, "isAppInactive", null);
} catch (RemoteException re) {
return false;
}
final long token = Binder.clearCallingIdentity();
try {
return UsageStatsService.this.isAppIdleFilteredOrParoled(packageName, userId, -1);
} finally {
Binder.restoreCallingIdentity(token);
}
}
Как вы можете видеть в сообщении commit, который добавляет isAppInactive
(первоначально называется isAppIdle
, то он переименовывается) API-интерфейс должен быть публичным:
Add ability to get and set idle state of apps
Add am shell command to set and get idle
Add public API to check if an app is idle
Я надеваю Не думаю, что это ошибка, а только нечеткая документация.