summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorKevin Han <kevhan@google.com>2021-03-11 00:48:06 -0800
committerKevin Han <kevhan@google.com>2021-03-19 10:38:16 -0700
commitf0df72a9c7268c2bde7443dfde708ab895e2bf30 (patch)
tree96d1c9f03cdc4f2acfd352cd10177ec197ab4bda /core
parent152e389bae3010c27296798f8e9237127a38ae2b (diff)
Add API to get hibernating packages
Add API to AppHibernationService to get hibernating packages so Settings can access this information. Bug: 175829330 Test: atest AppHibernationServiceTest Change-Id: Icd186807c19ece55a21fc4d240d2f0132951af82
Diffstat (limited to 'core')
-rw-r--r--core/api/system-current.txt1
-rw-r--r--core/java/android/apphibernation/AppHibernationManager.java18
-rw-r--r--core/java/android/apphibernation/IAppHibernationService.aidl1
3 files changed, 20 insertions, 0 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index f9ff3f21b6b0..5ce5075ac54b 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -1422,6 +1422,7 @@ package android.app.usage {
package android.apphibernation {
public final class AppHibernationManager {
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public java.util.List<java.lang.String> getHibernatingPackagesForUser();
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public boolean isHibernatingForUser(@NonNull String);
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public boolean isHibernatingGlobally(@NonNull String);
method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public void setHibernatingForUser(@NonNull String, boolean);
diff --git a/core/java/android/apphibernation/AppHibernationManager.java b/core/java/android/apphibernation/AppHibernationManager.java
index 132cc40f3948..de778488df03 100644
--- a/core/java/android/apphibernation/AppHibernationManager.java
+++ b/core/java/android/apphibernation/AppHibernationManager.java
@@ -24,6 +24,8 @@ import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
+import java.util.List;
+
/**
* This class provides an API surface for system apps to manipulate the app hibernation
* state of a package for the user provided in the context.
@@ -111,4 +113,20 @@ public final class AppHibernationManager {
throw e.rethrowFromSystemServer();
}
}
+
+ /**
+ * Get the hibernating packages for the user. This is equivalent to the list of packages for
+ * the user that return true for {@link #isHibernatingForUser}.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
+ public @NonNull List<String> getHibernatingPackagesForUser() {
+ try {
+ return mIAppHibernationService.getHibernatingPackagesForUser(mContext.getUserId());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
diff --git a/core/java/android/apphibernation/IAppHibernationService.aidl b/core/java/android/apphibernation/IAppHibernationService.aidl
index 6a068ee2b147..afdb3fe03dad 100644
--- a/core/java/android/apphibernation/IAppHibernationService.aidl
+++ b/core/java/android/apphibernation/IAppHibernationService.aidl
@@ -25,4 +25,5 @@ interface IAppHibernationService {
void setHibernatingForUser(String packageName, int userId, boolean isHibernating);
boolean isHibernatingGlobally(String packageName);
void setHibernatingGlobally(String packageName, boolean isHibernating);
+ List<String> getHibernatingPackagesForUser(int userId);
} \ No newline at end of file