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

Commit 1f9089af authored by Suprabh Shukla's avatar Suprabh Shukla Committed by android-build-merger
Browse files

Merge "Adding LauncherApps apis for suspended packages" into pi-dev am: a6d6a5aa

am: 733b8340

Change-Id: Id76853b6b65f128f193ce054491c5b0aaa672d05
parents dbc61bc0 733b8340
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -10913,6 +10913,7 @@ package android.content.pm {
    method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(java.lang.String, android.os.UserHandle);
    method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(java.lang.String, android.os.UserHandle);
    method public android.graphics.drawable.Drawable getShortcutIconDrawable(android.content.pm.ShortcutInfo, int);
    method public android.graphics.drawable.Drawable getShortcutIconDrawable(android.content.pm.ShortcutInfo, int);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
    method public android.os.Bundle getSuspendedPackageLauncherExtras(java.lang.String, android.os.UserHandle);
    method public boolean hasShortcutHostPermission();
    method public boolean hasShortcutHostPermission();
    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
    method public boolean isPackageEnabled(java.lang.String, android.os.UserHandle);
    method public boolean isPackageEnabled(java.lang.String, android.os.UserHandle);
@@ -10937,6 +10938,7 @@ package android.content.pm {
    method public abstract void onPackageRemoved(java.lang.String, android.os.UserHandle);
    method public abstract void onPackageRemoved(java.lang.String, android.os.UserHandle);
    method public abstract void onPackagesAvailable(java.lang.String[], android.os.UserHandle, boolean);
    method public abstract void onPackagesAvailable(java.lang.String[], android.os.UserHandle, boolean);
    method public void onPackagesSuspended(java.lang.String[], android.os.UserHandle);
    method public void onPackagesSuspended(java.lang.String[], android.os.UserHandle);
    method public void onPackagesSuspended(java.lang.String[], android.os.Bundle, android.os.UserHandle);
    method public abstract void onPackagesUnavailable(java.lang.String[], android.os.UserHandle, boolean);
    method public abstract void onPackagesUnavailable(java.lang.String[], android.os.UserHandle, boolean);
    method public void onPackagesUnsuspended(java.lang.String[], android.os.UserHandle);
    method public void onPackagesUnsuspended(java.lang.String[], android.os.UserHandle);
    method public void onShortcutsChanged(java.lang.String, java.util.List<android.content.pm.ShortcutInfo>, android.os.UserHandle);
    method public void onShortcutsChanged(java.lang.String, java.util.List<android.content.pm.ShortcutInfo>, android.os.UserHandle);
+13 −2
Original line number Original line Diff line number Diff line
@@ -1851,6 +1851,17 @@ public class Intent implements Parcelable, Cloneable {
    @SystemApi
    @SystemApi
    public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
    public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";


    /**
     * Intent extra: A {@link Bundle} of extras supplied for the launcher when any packages on
     * device are suspended. Will be sent with {@link #ACTION_PACKAGES_SUSPENDED}.
     *
     * @see PackageManager#isPackageSuspended()
     * @see #ACTION_PACKAGES_SUSPENDED
     *
     * @hide
     */
    public static final String EXTRA_LAUNCHER_EXTRAS = "android.intent.extra.LAUNCHER_EXTRAS";

    /**
    /**
     * Activity action: Launch UI to manage which apps have a given permission.
     * Activity action: Launch UI to manage which apps have a given permission.
     * <p>
     * <p>
@@ -2251,8 +2262,8 @@ public class Intent implements Parcelable, Cloneable {


    /**
    /**
     * 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 it's app extras change while
     * whenever a package is put into a suspended state or any of its app extras change while in the
     * in the suspended state.
     * suspended state.
     * <p> Optionally includes the following extras:
     * <p> Optionally includes the following extras:
     * <ul>
     * <ul>
     *     <li> {@link #EXTRA_SUSPENDED_PACKAGE_EXTRAS} which is a {@link Bundle} which will contain
     *     <li> {@link #EXTRA_SUSPENDED_PACKAGE_EXTRAS} which is a {@link Bundle} which will contain
+1 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ interface ILauncherApps {
            String callingPackage, in ComponentName component, in Rect sourceBounds,
            String callingPackage, in ComponentName component, in Rect sourceBounds,
            in Bundle opts, in UserHandle user);
            in Bundle opts, in UserHandle user);
    boolean isPackageEnabled(String callingPackage, String packageName, in UserHandle user);
    boolean isPackageEnabled(String callingPackage, String packageName, in UserHandle user);
    Bundle getSuspendedPackageLauncherExtras(String packageName, in UserHandle user);
    boolean isActivityEnabled(
    boolean isActivityEnabled(
            String callingPackage, in ComponentName component, in UserHandle user);
            String callingPackage, in ComponentName component, in UserHandle user);
    ApplicationInfo getApplicationInfo(
    ApplicationInfo getApplicationInfo(
+3 −1
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package android.content.pm;
package android.content.pm;


import android.content.pm.ParceledListSlice;
import android.content.pm.ParceledListSlice;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserHandle;


/**
/**
@@ -28,7 +29,8 @@ oneway interface IOnAppsChangedListener {
    void onPackageChanged(in UserHandle user, String packageName);
    void onPackageChanged(in UserHandle user, String packageName);
    void onPackagesAvailable(in UserHandle user, in String[] packageNames, boolean replacing);
    void onPackagesAvailable(in UserHandle user, in String[] packageNames, boolean replacing);
    void onPackagesUnavailable(in UserHandle user, in String[] packageNames, boolean replacing);
    void onPackagesUnavailable(in UserHandle user, in String[] packageNames, boolean replacing);
    void onPackagesSuspended(in UserHandle user, in String[] packageNames);
    void onPackagesSuspended(in UserHandle user, in String[] packageNames,
            in Bundle launcherExtras);
    void onPackagesUnsuspended(in UserHandle user, in String[] packageNames);
    void onPackagesUnsuspended(in UserHandle user, in String[] packageNames);
    void onShortcutChanged(in UserHandle user, String packageName, in ParceledListSlice shortcuts);
    void onShortcutChanged(in UserHandle user, String packageName, in ParceledListSlice shortcuts);
}
}
+55 −5
Original line number Original line Diff line number Diff line
@@ -211,6 +211,10 @@ public class LauncherApps {
         * example, this can happen when a Device Administrator suspends
         * example, this can happen when a Device Administrator suspends
         * an applicaton.
         * an applicaton.
         *
         *
         * <p>Note: On devices running {@link android.os.Build.VERSION_CODES#P Android P} or higher,
         * any apps that override {@link #onPackagesSuspended(String[], Bundle, UserHandle)} will
         * not receive this callback.
         *
         * @param packageNames The names of the packages that have just been
         * @param packageNames The names of the packages that have just been
         *            suspended.
         *            suspended.
         * @param user The UserHandle of the profile that generated the change.
         * @param user The UserHandle of the profile that generated the change.
@@ -218,6 +222,22 @@ public class LauncherApps {
        public void onPackagesSuspended(String[] packageNames, UserHandle user) {
        public void onPackagesSuspended(String[] packageNames, UserHandle user) {
        }
        }


        /**
         * Indicates that one or more packages have been suspended. A device administrator or an app
         * with {@code android.permission.SUSPEND_APPS} can do this.
         *
         * @param packageNames The names of the packages that have just been suspended.
         * @param launcherExtras A {@link Bundle} of extras for the launcher.
         * @param user the user for which the given packages were suspended.
         *
         * @see PackageManager#isPackageSuspended()
         * @see #getSuspendedPackageLauncherExtras(String, UserHandle)
         */
        public void onPackagesSuspended(String[] packageNames, @Nullable Bundle launcherExtras,
                UserHandle user) {
            onPackagesSuspended(packageNames, user);
        }

        /**
        /**
         * Indicates that one or more packages have been unsuspended. For
         * Indicates that one or more packages have been unsuspended. For
         * example, this can happen when a Device Administrator unsuspends
         * example, this can happen when a Device Administrator unsuspends
@@ -637,6 +657,31 @@ public class LauncherApps {
        }
        }
    }
    }


    /**
     * Gets the launcher extras supplied to the system when the given package was suspended via
     * {@code PackageManager#setPackagesSuspended(String[], boolean, PersistableBundle,
     * PersistableBundle, String)}.
     *
     * <p>Note: This just returns whatever extras were provided to the system, <em>which might
     * even be {@code null}.</em>
     *
     * @param packageName The package for which to fetch the launcher extras.
     * @param user The {@link UserHandle} of the profile.
     * @return A {@link Bundle} of launcher extras. Or {@code null} if the package is not currently
     *         suspended.
     *
     * @see Callback#onPackagesSuspended(String[], Bundle, UserHandle)
     * @see PackageManager#isPackageSuspended()
     */
    public @Nullable Bundle getSuspendedPackageLauncherExtras(String packageName, UserHandle user) {
        logErrorForInvalidProfileAccess(user);
        try {
            return mService.getSuspendedPackageLauncherExtras(packageName, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
    }

    /**
    /**
     * Returns {@link ApplicationInfo} about an application installed for a specific user profile.
     * Returns {@link ApplicationInfo} about an application installed for a specific user profile.
     *
     *
@@ -652,7 +697,7 @@ public class LauncherApps {
            @ApplicationInfoFlags int flags, @NonNull UserHandle user)
            @ApplicationInfoFlags int flags, @NonNull UserHandle user)
            throws PackageManager.NameNotFoundException {
            throws PackageManager.NameNotFoundException {
        Preconditions.checkNotNull(packageName, "packageName");
        Preconditions.checkNotNull(packageName, "packageName");
        Preconditions.checkNotNull(packageName, "user");
        Preconditions.checkNotNull(user, "user");
        logErrorForInvalidProfileAccess(user);
        logErrorForInvalidProfileAccess(user);
        try {
        try {
            final ApplicationInfo ai = mService
            final ApplicationInfo ai = mService
@@ -1163,14 +1208,15 @@ public class LauncherApps {
        }
        }


        @Override
        @Override
        public void onPackagesSuspended(UserHandle user, String[] packageNames)
        public void onPackagesSuspended(UserHandle user, String[] packageNames,
                Bundle launcherExtras)
                throws RemoteException {
                throws RemoteException {
            if (DEBUG) {
            if (DEBUG) {
                Log.d(TAG, "onPackagesSuspended " + user.getIdentifier() + "," + packageNames);
                Log.d(TAG, "onPackagesSuspended " + user.getIdentifier() + "," + packageNames);
            }
            }
            synchronized (LauncherApps.this) {
            synchronized (LauncherApps.this) {
                for (CallbackMessageHandler callback : mCallbacks) {
                for (CallbackMessageHandler callback : mCallbacks) {
                    callback.postOnPackagesSuspended(packageNames, user);
                    callback.postOnPackagesSuspended(packageNames, launcherExtras, user);
                }
                }
            }
            }
        }
        }
@@ -1218,6 +1264,7 @@ public class LauncherApps {
        private static class CallbackInfo {
        private static class CallbackInfo {
            String[] packageNames;
            String[] packageNames;
            String packageName;
            String packageName;
            Bundle launcherExtras;
            boolean replacing;
            boolean replacing;
            UserHandle user;
            UserHandle user;
            List<ShortcutInfo> shortcuts;
            List<ShortcutInfo> shortcuts;
@@ -1251,7 +1298,8 @@ public class LauncherApps {
                    mCallback.onPackagesUnavailable(info.packageNames, info.user, info.replacing);
                    mCallback.onPackagesUnavailable(info.packageNames, info.user, info.replacing);
                    break;
                    break;
                case MSG_SUSPENDED:
                case MSG_SUSPENDED:
                    mCallback.onPackagesSuspended(info.packageNames, info.user);
                    mCallback.onPackagesSuspended(info.packageNames, info.launcherExtras,
                            info.user);
                    break;
                    break;
                case MSG_UNSUSPENDED:
                case MSG_UNSUSPENDED:
                    mCallback.onPackagesUnsuspended(info.packageNames, info.user);
                    mCallback.onPackagesUnsuspended(info.packageNames, info.user);
@@ -1301,10 +1349,12 @@ public class LauncherApps {
            obtainMessage(MSG_UNAVAILABLE, info).sendToTarget();
            obtainMessage(MSG_UNAVAILABLE, info).sendToTarget();
        }
        }


        public void postOnPackagesSuspended(String[] packageNames, UserHandle user) {
        public void postOnPackagesSuspended(String[] packageNames, Bundle launcherExtras,
                UserHandle user) {
            CallbackInfo info = new CallbackInfo();
            CallbackInfo info = new CallbackInfo();
            info.packageNames = packageNames;
            info.packageNames = packageNames;
            info.user = user;
            info.user = user;
            info.launcherExtras = launcherExtras;
            obtainMessage(MSG_SUSPENDED, info).sendToTarget();
            obtainMessage(MSG_SUSPENDED, info).sendToTarget();
        }
        }


Loading