summaryrefslogtreecommitdiff
path: root/core/java/android/permission/PermissionControllerManager.java
diff options
context:
space:
mode:
authorKevin Han <kevhan@google.com>2021-11-30 22:36:54 -0800
committerKevin Han <kevhan@google.com>2021-12-16 18:11:14 -0800
commitf23347642ce378960d6836d5a4bb660190d36a3c (patch)
tree27f25e9933c9d148531d246fd6e5975d35494d5d /core/java/android/permission/PermissionControllerManager.java
parent65094b9d544e15d442e185bd37d3221770c2cebd (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.java31
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);
+ }
+ }
+ });
+ }
}