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

Commit 390a8130 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Add UserHandle to ShortcutInfo, and simplify LauncherApps APIs." into nyc-dev

parents 4c74334c abe84429
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -9498,9 +9498,10 @@ package android.content.pm {
  public class LauncherApps {
    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle);
    method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcutInfo(java.lang.String, java.util.List<java.lang.String>, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(java.lang.String, java.lang.String, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo);
    method public int getShortcutIconResId(java.lang.String, java.lang.String, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
    method public boolean hasShortcutHostPermission();
    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
@@ -9512,6 +9513,7 @@ package android.content.pm {
    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 boolean startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
    method public boolean startShortcut(android.content.pm.ShortcutInfo, android.graphics.Rect, android.os.Bundle);
    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
  }
@@ -9533,6 +9535,7 @@ package android.content.pm {
    method public void setChangedSince(long);
    method public void setPackage(java.lang.String);
    method public void setQueryFlags(int);
    method public void setShortcutIds(java.util.List<java.lang.String>);
    field public static final int FLAG_GET_DYNAMIC = 1; // 0x1
    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
    field public static final int FLAG_GET_PINNED = 2; // 0x2
@@ -10046,6 +10049,7 @@ package android.content.pm {
    method public java.lang.String getPackageName();
    method public java.lang.String getText();
    method public java.lang.String getTitle();
    method public android.os.UserHandle getUserHandle();
    method public int getWeight();
    method public boolean hasIconFile();
    method public boolean hasIconResource();
+7 −3
Original line number Diff line number Diff line
@@ -9836,9 +9836,10 @@ package android.content.pm {
  public class LauncherApps {
    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle);
    method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcutInfo(java.lang.String, java.util.List<java.lang.String>, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(java.lang.String, java.lang.String, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo);
    method public int getShortcutIconResId(java.lang.String, java.lang.String, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
    method public boolean hasShortcutHostPermission();
    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
@@ -9850,6 +9851,7 @@ package android.content.pm {
    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 boolean startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
    method public boolean startShortcut(android.content.pm.ShortcutInfo, android.graphics.Rect, android.os.Bundle);
    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
  }
@@ -9871,6 +9873,7 @@ package android.content.pm {
    method public void setChangedSince(long);
    method public void setPackage(java.lang.String);
    method public void setQueryFlags(int);
    method public void setShortcutIds(java.util.List<java.lang.String>);
    field public static final int FLAG_GET_DYNAMIC = 1; // 0x1
    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
    field public static final int FLAG_GET_PINNED = 2; // 0x2
@@ -10446,6 +10449,7 @@ package android.content.pm {
    method public java.lang.String getPackageName();
    method public java.lang.String getText();
    method public java.lang.String getTitle();
    method public android.os.UserHandle getUserHandle();
    method public int getWeight();
    method public boolean hasIconFile();
    method public boolean hasIconResource();
+7 −3
Original line number Diff line number Diff line
@@ -9507,9 +9507,10 @@ package android.content.pm {
  public class LauncherApps {
    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle);
    method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcutInfo(java.lang.String, java.util.List<java.lang.String>, android.os.UserHandle);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(android.content.pm.ShortcutInfo);
    method public android.os.ParcelFileDescriptor getShortcutIconFd(java.lang.String, java.lang.String, android.os.UserHandle);
    method public int getShortcutIconResId(android.content.pm.ShortcutInfo);
    method public int getShortcutIconResId(java.lang.String, java.lang.String, android.os.UserHandle);
    method public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(android.content.pm.LauncherApps.ShortcutQuery, android.os.UserHandle);
    method public boolean hasShortcutHostPermission();
    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
@@ -9521,6 +9522,7 @@ package android.content.pm {
    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 boolean startShortcut(java.lang.String, java.lang.String, android.graphics.Rect, android.os.Bundle, android.os.UserHandle);
    method public boolean startShortcut(android.content.pm.ShortcutInfo, android.graphics.Rect, android.os.Bundle);
    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
  }
@@ -9542,6 +9544,7 @@ package android.content.pm {
    method public void setChangedSince(long);
    method public void setPackage(java.lang.String);
    method public void setQueryFlags(int);
    method public void setShortcutIds(java.util.List<java.lang.String>);
    field public static final int FLAG_GET_DYNAMIC = 1; // 0x1
    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
    field public static final int FLAG_GET_PINNED = 2; // 0x2
@@ -10056,6 +10059,7 @@ package android.content.pm {
    method public java.lang.String getPackageName();
    method public java.lang.String getText();
    method public java.lang.String getTitle();
    method public android.os.UserHandle getUserHandle();
    method public int getWeight();
    method public boolean hasIconFile();
    method public boolean hasIconResource();
+6 −7
Original line number Diff line number Diff line
@@ -47,17 +47,16 @@ interface ILauncherApps {
    ApplicationInfo getApplicationInfo(String packageName, int flags, in UserHandle user);

    ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
            in ComponentName componentName, int flags, in UserHandle user);
    ParceledListSlice getShortcutInfo(String callingPackage, String packageName, in List<String> ids,
            in UserHandle user);
            in List shortcutIds, in ComponentName componentName, int flags, in UserHandle user);
    void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
            in UserHandle user);
    boolean startShortcut(String callingPackage, String packageName, String id,
            in Rect sourceBounds, in Bundle startActivityOptions, in UserHandle user);
            in Rect sourceBounds, in Bundle startActivityOptions, int userId);

    int getShortcutIconResId(String callingPackage, in ShortcutInfo shortcut, in UserHandle user);
    ParcelFileDescriptor getShortcutIconFd(String callingPackage, in ShortcutInfo shortcut,
            in UserHandle user);
    int getShortcutIconResId(String callingPackage, String packageName, String id,
            int userId);
    ParcelFileDescriptor getShortcutIconFd(String callingPackage, String packageName, String id,
            int userId);

    boolean hasShortcutHostPermission(String callingPackage);
}
+94 −23
Original line number Diff line number Diff line
@@ -204,6 +204,9 @@ public class LauncherApps {
        @Nullable
        String mPackage;

        @Nullable
        List<String> mShortcutIds;

        @Nullable
        ComponentName mActivity;

@@ -228,6 +231,14 @@ public class LauncherApps {
            mPackage = packageName;
        }

        /**
         * If non-null, return only the specified shortcuts by ID.  When setting this field,
         * a packange name must also be set with {@link #setPackage}.
         */
        public void setShortcutIds(@Nullable List<String> shortcutIds) {
            mShortcutIds = shortcutIds;
        }

        /**
         * If non-null, returns only shortcuts associated with the activity.
         */
@@ -429,7 +440,8 @@ public class LauncherApps {
            @NonNull UserHandle user) {
        try {
            return mService.getShortcuts(mContext.getPackageName(),
                    query.mChangedSince, query.mPackage, query.mActivity, query.mQueryFlags, user)
                    query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
                    query.mQueryFlags, user)
                    .getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
@@ -437,28 +449,17 @@ public class LauncherApps {
    }

    /**
     * Returns {@link ShortcutInfo}s with the given IDs from a package.
     *
     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
     * #hasShortcutHostPermission()}.
     *
     * @param packageName The target package.
     * @param ids IDs of the shortcuts to retrieve.
     * @param user The UserHandle of the profile.
     *
     * @return list of {@link ShortcutInfo} associated with the package.
     * @hide // No longer used.  Use getShortcuts() instead.  Kept for unit tests.
     */
    @Nullable
    public List<ShortcutInfo> getShortcutInfo(@NonNull String packageName,
            @NonNull List<String> ids, @NonNull UserHandle user) {
        try {
            return mService.getShortcutInfo(mContext.getPackageName(), packageName, ids, user)
                    .getList();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        final ShortcutQuery q = new ShortcutQuery();
        q.setPackage(packageName);
        q.setShortcutIds(ids);
        q.setQueryFlags(ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_PINNED);
        return getShortcuts(q, user);
    }
    }


    /**
     * Pin shortcuts on a package.
@@ -490,11 +491,33 @@ public class LauncherApps {
     * #hasShortcutHostPermission()}.
     *
     * @param shortcut The target shortcut.
     */
    public int getShortcutIconResId(@NonNull ShortcutInfo shortcut) {
        return getShortcutIconResId(shortcut.getPackageName(), shortcut.getId(),
                shortcut.getUserId());
    }

    /**
     * Return the icon resource ID, if {@code shortcut} has one
     * (i.e. when {@link ShortcutInfo#hasIconResource()} returns {@code true}).
     *
     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
     * #hasShortcutHostPermission()}.
     *
     * @param packageName The target package name.
     * @param shortcutId The ID of the shortcut to lad rom.
     * @param user The UserHandle of the profile.
     */
    public int getShortcutIconResId(@NonNull ShortcutInfo shortcut, @NonNull UserHandle user) {
    public int getShortcutIconResId(@NonNull String packageName, @NonNull String shortcutId,
            @NonNull UserHandle user) {
        return getShortcutIconResId(packageName, shortcutId, user.getIdentifier());
    }

    private int getShortcutIconResId(@NonNull String packageName, @NonNull String shortcutId,
            int userId) {
        try {
            return mService.getShortcutIconResId(mContext.getPackageName(), shortcut, user);
            return mService.getShortcutIconResId(mContext.getPackageName(),
                    packageName, shortcutId, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -508,12 +531,34 @@ public class LauncherApps {
     * #hasShortcutHostPermission()}.
     *
     * @param shortcut The target shortcut.
     */
    public ParcelFileDescriptor getShortcutIconFd(
            @NonNull ShortcutInfo shortcut) {
        return getShortcutIconFd(shortcut.getPackageName(), shortcut.getId(),
                shortcut.getUserId());
    }

    /**
     * Return the icon as {@link ParcelFileDescriptor}, when it's stored as a file
     * (i.e. when {@link ShortcutInfo#hasIconFile()} returns {@code true}).
     *
     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
     * #hasShortcutHostPermission()}.
     *
     * @param packageName The target package name.
     * @param shortcutId The ID of the shortcut to lad rom.
     * @param user The UserHandle of the profile.
     */
    public ParcelFileDescriptor getShortcutIconFd(
            @NonNull ShortcutInfo shortcut, @NonNull UserHandle user) {
            @NonNull String packageName, @NonNull String shortcutId, @NonNull UserHandle user) {
        return getShortcutIconFd(packageName, shortcutId, user.getIdentifier());
    }

    private ParcelFileDescriptor getShortcutIconFd(
            @NonNull String packageName, @NonNull String shortcutId, int userId) {
        try {
            return mService.getShortcutIconFd(mContext.getPackageName(), shortcut, user);
            return mService.getShortcutIconFd(mContext.getPackageName(),
                    packageName, shortcutId, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -536,9 +581,35 @@ public class LauncherApps {
    public boolean startShortcut(@NonNull String packageName, @NonNull String shortcutId,
            @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions,
            @NonNull UserHandle user) {
        return startShortcut(packageName, shortcutId, sourceBounds, startActivityOptions,
                user.getIdentifier());
    }

    /**
     * Launches a shortcut.
     *
     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
     * #hasShortcutHostPermission()}.
     *
     * @param shortcut The target shortcut.
     * @param sourceBounds The Rect containing the source bounds of the clicked icon.
     * @param startActivityOptions Options to pass to startActivity.
     * @return {@code false} when the shortcut is no longer valid (e.g. the creator application
     *   has been uninstalled). {@code true} when the shortcut is still valid.
     */
    public boolean startShortcut(@NonNull ShortcutInfo shortcut,
            @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions) {
        return startShortcut(shortcut.getPackageName(), shortcut.getId(),
                sourceBounds, startActivityOptions,
                shortcut.getUserId());
    }

    private boolean startShortcut(@NonNull String packageName, @NonNull String shortcutId,
            @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions,
            int userId) {
        try {
            return mService.startShortcut(mContext.getPackageName(), packageName, shortcutId,
                    sourceBounds, startActivityOptions, user);
                    sourceBounds, startActivityOptions, userId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
Loading