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

Commit 79000492 authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Adding an api to mark a package as distracting

Adding a package manager api to mark packages as distracting to the
user. While doing this, some restrictions can be imposed on these
packages to enable the user to refrain from using them often.

Test: Unit tests:
atest com.android.server.pm.PackageManagerSettingsTests\
com.android.server.pm.PackageUserStateTest

GTS test: atest GtsSuspendAppsTestCases

Bug: 117407613
Change-Id: I5d0606b3c6c1edcaba001852d10f1a9e140b8028
parent 97e54a01
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -11184,6 +11184,7 @@ package android.content.pm {
    method public void registerCallback(android.content.pm.LauncherApps.Callback);
    method public void registerCallback(android.content.pm.LauncherApps.Callback);
    method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
    method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
    method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
    method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
    method public boolean shouldHideFromSuggestions(java.lang.String, android.os.UserHandle);
    method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
    method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
    method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
    method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
    method public void startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
    method public void startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
+7 −0
Original line number Original line Diff line number Diff line
@@ -1253,6 +1253,7 @@ package android.content.pm {
    method public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
    method public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
    method public void sendDeviceCustomizationReadyBroadcast();
    method public void sendDeviceCustomizationReadyBroadcast();
    method public abstract boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
    method public abstract boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
    method public java.lang.String[] setDistractingPackageRestrictions(java.lang.String[], int);
    method public void setHarmfulAppWarning(java.lang.String, java.lang.CharSequence);
    method public void setHarmfulAppWarning(java.lang.String, java.lang.CharSequence);
    method public deprecated java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String);
    method public deprecated java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String);
    method public java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, android.content.pm.SuspendDialogInfo);
    method public java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, android.content.pm.SuspendDialogInfo);
@@ -1320,6 +1321,9 @@ package android.content.pm {
    field public static final int MATCH_ANY_USER = 4194304; // 0x400000
    field public static final int MATCH_ANY_USER = 4194304; // 0x400000
    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
    field public static final int MATCH_INSTANT = 8388608; // 0x800000
    field public static final int MATCH_INSTANT = 8388608; // 0x800000
    field public static final int RESTRICTION_HIDE_FROM_SUGGESTIONS = 1; // 0x1
    field public static final int RESTRICTION_HIDE_NOTIFICATIONS = 2; // 0x2
    field public static final int RESTRICTION_NONE = 0; // 0x0
  }
  }


  public static abstract class PackageManager.DexModuleRegisterCallback {
  public static abstract class PackageManager.DexModuleRegisterCallback {
@@ -1327,6 +1331,9 @@ package android.content.pm {
    method public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String);
    method public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String);
  }
  }


  public static abstract class PackageManager.DistractionRestriction implements java.lang.annotation.Annotation {
  }

  public static abstract interface PackageManager.OnPermissionsChangedListener {
  public static abstract interface PackageManager.OnPermissionsChangedListener {
    method public abstract void onPermissionsChanged(int);
    method public abstract void onPermissionsChanged(int);
  }
  }
+10 −0
Original line number Original line Diff line number Diff line
@@ -2275,6 +2275,16 @@ public class ApplicationPackageManager extends PackageManager {
        }
        }
    }
    }


    @Override
    public String[] setDistractingPackageRestrictions(String[] packages, int distractionFlags) {
        try {
            return mPM.setDistractingPackageRestrictionsAsUser(packages, distractionFlags,
                    mContext.getUserId());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    @Override
    @Override
    public String[] setPackagesSuspended(String[] packageNames, boolean suspended,
    public String[] setPackagesSuspended(String[] packageNames, boolean suspended,
            PersistableBundle appExtras, PersistableBundle launcherExtras,
            PersistableBundle appExtras, PersistableBundle launcherExtras,
+30 −0
Original line number Original line Diff line number Diff line
@@ -2352,6 +2352,25 @@ public class Intent implements Parcelable, Cloneable {
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
    public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";


    /**
     * Broadcast Action: Distracting packages have been changed.
     * <p>Includes the following extras:
     * <ul>
     * <li> {@link #EXTRA_CHANGED_PACKAGE_LIST} is the set of packages which have been changed.
     * <li> {@link #EXTRA_CHANGED_UID_LIST} is the set of uids which have been changed.
     * <li> {@link #EXTRA_DISTRACTION_RESTRICTIONS} the new restrictions set on these packages.
     * </ul>
     *
     * <p class="note">This is a protected intent that can only be sent
     * by the system. It is only sent to registered receivers.
     *
     * @see PackageManager#setDistractingPackageRestrictions(String[], int)
     * @hide
     */
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_DISTRACTING_PACKAGES_CHANGED =
            "android.intent.action.DISTRACTING_PACKAGES_CHANGED";

    /**
    /**
     * Broadcast Action: Sent to a package that has been suspended by the system. This is sent
     * Broadcast Action: Sent to a package that has been suspended by the system. This is sent
     * whenever a package is put into a suspended state or any of its app extras change while in the
     * whenever a package is put into a suspended state or any of its app extras change while in the
@@ -5061,6 +5080,17 @@ public class Intent implements Parcelable, Cloneable {
    public static final String EXTRA_CHANGED_UID_LIST =
    public static final String EXTRA_CHANGED_UID_LIST =
            "android.intent.extra.changed_uid_list";
            "android.intent.extra.changed_uid_list";


    /**
     * An integer denoting a bitwise combination of restrictions set on distracting packages via
     * {@link PackageManager#setDistractingPackageRestrictions(String[], int)}
     *
     * @hide
     * @see PackageManager.DistractionRestriction
     * @see PackageManager#setDistractingPackageRestrictions(String[], int)
     */
    public static final String EXTRA_DISTRACTION_RESTRICTIONS =
            "android.intent.extra.distraction_restrictions";

    /**
    /**
     * @hide
     * @hide
     * Magic extra system code can use when binding, to give a label for
     * Magic extra system code can use when binding, to give a label for
+1 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ interface ILauncherApps {
            int userId);
            int userId);


    boolean hasShortcutHostPermission(String callingPackage);
    boolean hasShortcutHostPermission(String callingPackage);
    boolean shouldHideFromSuggestions(String packageName, in UserHandle user);


    ParceledListSlice getShortcutConfigActivities(
    ParceledListSlice getShortcutConfigActivities(
            String callingPackage, String packageName, in UserHandle user);
            String callingPackage, String packageName, in UserHandle user);
Loading