Loading core/java/android/app/usage/IUsageStatsManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ interface IUsageStatsManager { int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RESPONSE_STATS)") void clearBroadcastEvents(String callingPackage, int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.DUMP)") boolean isPackageExemptedFromBroadcastResponseStats(String packageName, int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG)") String getAppStandbyConstant(String key); } core/java/android/app/usage/UsageStatsManager.java +16 −0 Original line number Diff line number Diff line Loading @@ -1528,6 +1528,22 @@ public final class UsageStatsManager { } } /** * Checks whether the given {@code packageName} is exempted from broadcast response tracking. * * @hide */ @RequiresPermission(android.Manifest.permission.DUMP) @UserHandleAware public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName) { try { return mService.isPackageExemptedFromBroadcastResponseStats(packageName, mContext.getUserId()); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } } /** @hide */ @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) @Nullable Loading services/usage/java/com/android/server/usage/BroadcastResponseStatsTracker.java +13 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,19 @@ class BroadcastResponseStatsTracker { } } boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName, @NonNull UserHandle user) { synchronized (mLock) { if (doesPackageHoldExemptedPermission(packageName, user)) { return true; } if (doesPackageHoldExemptedRole(packageName, user)) { return true; } return false; } } boolean doesPackageHoldExemptedRole(@NonNull String packageName, @NonNull UserHandle user) { final List<String> exemptedRoles = mAppStandby.getBroadcastResponseExemptedRoles(); synchronized (mLock) { Loading services/usage/java/com/android/server/usage/UsageStatsService.java +12 −0 Original line number Diff line number Diff line Loading @@ -2866,6 +2866,18 @@ public class UsageStatsService extends SystemService implements mResponseStatsTracker.clearBroadcastEvents(callingUid, userId); } @Override public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String callingPackage, @UserIdInt int userId) { Objects.requireNonNull(callingPackage); getContext().enforceCallingOrSelfPermission( android.Manifest.permission.DUMP, "isPackageExemptedFromBroadcastResponseStats"); return mResponseStatsTracker.isPackageExemptedFromBroadcastResponseStats( callingPackage, UserHandle.of(userId)); } @Override @Nullable public String getAppStandbyConstant(@NonNull String key) { Loading Loading
core/java/android/app/usage/IUsageStatsManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ interface IUsageStatsManager { int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RESPONSE_STATS)") void clearBroadcastEvents(String callingPackage, int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.DUMP)") boolean isPackageExemptedFromBroadcastResponseStats(String packageName, int userId); @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG)") String getAppStandbyConstant(String key); }
core/java/android/app/usage/UsageStatsManager.java +16 −0 Original line number Diff line number Diff line Loading @@ -1528,6 +1528,22 @@ public final class UsageStatsManager { } } /** * Checks whether the given {@code packageName} is exempted from broadcast response tracking. * * @hide */ @RequiresPermission(android.Manifest.permission.DUMP) @UserHandleAware public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName) { try { return mService.isPackageExemptedFromBroadcastResponseStats(packageName, mContext.getUserId()); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } } /** @hide */ @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) @Nullable Loading
services/usage/java/com/android/server/usage/BroadcastResponseStatsTracker.java +13 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,19 @@ class BroadcastResponseStatsTracker { } } boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName, @NonNull UserHandle user) { synchronized (mLock) { if (doesPackageHoldExemptedPermission(packageName, user)) { return true; } if (doesPackageHoldExemptedRole(packageName, user)) { return true; } return false; } } boolean doesPackageHoldExemptedRole(@NonNull String packageName, @NonNull UserHandle user) { final List<String> exemptedRoles = mAppStandby.getBroadcastResponseExemptedRoles(); synchronized (mLock) { Loading
services/usage/java/com/android/server/usage/UsageStatsService.java +12 −0 Original line number Diff line number Diff line Loading @@ -2866,6 +2866,18 @@ public class UsageStatsService extends SystemService implements mResponseStatsTracker.clearBroadcastEvents(callingUid, userId); } @Override public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String callingPackage, @UserIdInt int userId) { Objects.requireNonNull(callingPackage); getContext().enforceCallingOrSelfPermission( android.Manifest.permission.DUMP, "isPackageExemptedFromBroadcastResponseStats"); return mResponseStatsTracker.isPackageExemptedFromBroadcastResponseStats( callingPackage, UserHandle.of(userId)); } @Override @Nullable public String getAppStandbyConstant(@NonNull String key) { Loading