Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dfa5f8d authored by Kevin Han's avatar Kevin Han Committed by Gerrit Code Review
Browse files

Merge changes from topic "app_hibernation_permission"

* changes:
  Add API to get hibernating packages
  Add MANAGE_APP_HIBERNATION permission
parents 64e333a2 f0df72a9
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ package android {
    field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
    field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
    field public static final String MANAGE_APP_HIBERNATION = "android.permission.MANAGE_APP_HIBERNATION";
    field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
    field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
    field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
@@ -1421,10 +1422,11 @@ package android.app.usage {
package android.apphibernation {
  public final class AppHibernationManager {
    method public boolean isHibernatingForUser(@NonNull String);
    method public boolean isHibernatingGlobally(@NonNull String);
    method public void setHibernatingForUser(@NonNull String, boolean);
    method public void setHibernatingGlobally(@NonNull String, boolean);
    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);
    method @RequiresPermission(android.Manifest.permission.MANAGE_APP_HIBERNATION) public void setHibernatingGlobally(@NonNull String, boolean);
  }
}
+23 −0
Original line number Diff line number Diff line
@@ -17,12 +17,15 @@
package android.apphibernation;

import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
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.
@@ -54,6 +57,7 @@ public final class AppHibernationManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
    public boolean isHibernatingForUser(@NonNull String packageName) {
        try {
            return mIAppHibernationService.isHibernatingForUser(packageName, mContext.getUserId());
@@ -68,6 +72,7 @@ public final class AppHibernationManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
    public void setHibernatingForUser(@NonNull String packageName, boolean isHibernating) {
        try {
            mIAppHibernationService.setHibernatingForUser(packageName, mContext.getUserId(),
@@ -83,6 +88,7 @@ public final class AppHibernationManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
    public boolean isHibernatingGlobally(@NonNull String packageName) {
        try {
            return mIAppHibernationService.isHibernatingGlobally(packageName);
@@ -99,6 +105,7 @@ public final class AppHibernationManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(value = android.Manifest.permission.MANAGE_APP_HIBERNATION)
    public void setHibernatingGlobally(@NonNull String packageName, boolean isHibernating) {
        try {
            mIAppHibernationService.setHibernatingGlobally(packageName, isHibernating);
@@ -106,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();
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -5172,6 +5172,10 @@
    <permission android:name="android.permission.INPUT_CONSUMER"
                android:protectionLevel="signature" />

    <!-- @hide @SystemApi Allows an application to manage app hibernation state. -->
    <permission android:name="android.permission.MANAGE_APP_HIBERNATION"
                android:protectionLevel="signature|installer" />

    <!-- Attribution for Country Detector. -->
    <attribution android:tag="CountryDetector" android:label="@string/country_detector"/>
    <!-- Attribution for Location service. -->
+1 −0
Original line number Diff line number Diff line
@@ -451,6 +451,7 @@ applications that come with the platform
        <permission name="android.permission.MANAGE_SOUND_TRIGGER" />
        <permission name="android.permission.CAPTURE_AUDIO_HOTWORD" />
        <permission name="android.permission.MODIFY_QUIET_MODE" />
        <permission name="android.permission.MANAGE_APP_HIBERNATION"/>
    </privapp-permissions>

    <privapp-permissions package="com.android.statementservice">
Loading