diff options
| author | Kevin Han <kevhan@google.com> | 2021-11-30 22:36:54 -0800 |
|---|---|---|
| committer | Kevin Han <kevhan@google.com> | 2021-12-16 18:11:14 -0800 |
| commit | f23347642ce378960d6836d5a4bb660190d36a3c (patch) | |
| tree | 27f25e9933c9d148531d246fd6e5975d35494d5d /core/java/android/permission/PermissionControllerManager.java | |
| parent | 65094b9d544e15d442e185bd37d3221770c2cebd (diff) | |
Add unused count API
Add unused count API to PermissionControllerManager to allow Settings to
pull the number of unused apps from PermissionController.
Bug: 200087723
Bug: 187465752
Test: CTS test in topic
Change-Id: I197b07af0e7a40bb5daececd8ef7d053a2895016
Diffstat (limited to 'core/java/android/permission/PermissionControllerManager.java')
| -rw-r--r-- | core/java/android/permission/PermissionControllerManager.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java index 00f9e45fa22e..a0788e70b247 100644 --- a/core/java/android/permission/PermissionControllerManager.java +++ b/core/java/android/permission/PermissionControllerManager.java @@ -69,6 +69,7 @@ import java.util.Objects; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import java.util.function.IntConsumer; /** * Interface for communicating with the permission controller. @@ -786,4 +787,34 @@ public final class PermissionControllerManager { } }, executor); } + + /** + * Get the number of unused, hibernating apps for the user. + * + * @param executor executor to run callback on + * @param callback callback for when result is generated + */ + public void getUnusedAppCount(@NonNull @CallbackExecutor Executor executor, + @NonNull IntConsumer callback) { + checkNotNull(executor); + checkNotNull(callback); + + mRemoteService.postAsync(service -> { + AndroidFuture<Integer> unusedAppCountResult = new AndroidFuture<>(); + service.getUnusedAppCount(unusedAppCountResult); + return unusedAppCountResult; + }).whenCompleteAsync((count, err) -> { + if (err != null) { + Log.e(TAG, "Error getting unused app count", err); + callback.accept(0); + } else { + final long token = Binder.clearCallingIdentity(); + try { + callback.accept((int) count); + } finally { + Binder.restoreCallingIdentity(token); + } + } + }); + } } |
