Android 6 UsageStatsManager isAppInactive() 权限
Android 6 UsageStatsManager isAppInactive() permission
我正在使用 UsageStatsManager
class 在 Android 6 (API 23) 上的 isAppInactive()
方法来检测应用程序的待机状态我发展中。
docs确认有必要请求PACKAGE_USAGE_STATS
许可,但我可以在不请求许可的情况下使用该方法。
这是一个错误吗?
在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应该是public:
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
我不认为这是一个错误,而只是一个不清楚的文档。
我正在使用 UsageStatsManager
class 在 Android 6 (API 23) 上的 isAppInactive()
方法来检测应用程序的待机状态我发展中。
docs确认有必要请求PACKAGE_USAGE_STATS
许可,但我可以在不请求许可的情况下使用该方法。
这是一个错误吗?
在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应该是public:
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
我不认为这是一个错误,而只是一个不清楚的文档。