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

Commit acd86ff4 authored by Tony's avatar Tony Committed by Tony Wickham
Browse files

Surround shortcut API calls with try-catch.

Bug: 29732661
Change-Id: Iba96eedab67e7715f34139c64f96b1a81ba30ea5
parent 0d21daac
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -1932,10 +1932,7 @@ public class LauncherModel extends BroadcastReceiver
                                        List<ShortcutInfoCompat> fullDetails = mDeepShortcutManager
                                                .queryForFullDetails(packageName,
                                                Collections.singletonList(shortcutId), user);
                                        if (fullDetails == null || fullDetails.isEmpty()) {
                                            itemsToRemove.add(id);
                                            continue;
                                        } else {
                                        if (fullDetails != null && !fullDetails.isEmpty()) {
                                            pinnedShortcut = fullDetails.get(0);
                                            shouldPin = true;
                                        }
+33 −8
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ShortcutInfo;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;

import com.android.launcher3.Utilities;
import com.android.launcher3.compat.UserHandleCompat;
@@ -37,6 +38,7 @@ import java.util.List;
 * Performs operations related to deep shortcuts, such as querying for them, pinning them, etc.
 */
public class DeepShortcutManager {
    private static final String TAG = "DeepShortcutManager";

    // TODO: Replace this with platform constants when the new sdk is available.
    public static final int FLAG_MATCH_DYNAMIC = 1 << 0;
@@ -87,7 +89,11 @@ public class DeepShortcutManager {
            UserHandleCompat user = key.user;
            List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
            pinnedIds.remove(id);
            try {
                mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
            } catch (SecurityException e) {
                Log.e(TAG, Log.getStackTraceString(e));
            }
        }
    }

@@ -103,7 +109,11 @@ public class DeepShortcutManager {
            UserHandleCompat user = key.user;
            List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
            pinnedIds.add(id);
            try {
                mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
            } catch (SecurityException e) {
                Log.e(TAG, Log.getStackTraceString(e));
            }
        }
    }

@@ -111,16 +121,26 @@ public class DeepShortcutManager {
    public void startShortcut(String packageName, String id, Rect sourceBounds,
          Bundle startActivityOptions, UserHandleCompat user) {
        if (Utilities.isNycMR1OrAbove()) {
            try {
                mLauncherApps.startShortcut(packageName, id, sourceBounds,
                        startActivityOptions, user.getUser());
            } catch (SecurityException e) {
                Log.e(TAG, Log.getStackTraceString(e));
            }
        }
    }

    @TargetApi(25)
    public Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density) {
        return Utilities.isNycMR1OrAbove()
                ? mLauncherApps.getShortcutIconDrawable(shortcutInfo.getShortcutInfo(), density)
                : null;
        if (Utilities.isNycMR1OrAbove()) {
            try {
                return mLauncherApps.getShortcutIconDrawable(shortcutInfo.getShortcutInfo(),
                        density);
            } catch (SecurityException e) {
                Log.e(TAG, Log.getStackTraceString(e));
            }
        }
        return null;
    }

    /**
@@ -162,7 +182,12 @@ public class DeepShortcutManager {
                q.setActivity(activity);
                q.setShortcutIds(shortcutIds);
            }
            List<ShortcutInfo> shortcutInfos = mLauncherApps.getShortcuts(q, user.getUser());
            List<ShortcutInfo> shortcutInfos = null;
            try {
                shortcutInfos = mLauncherApps.getShortcuts(q, user.getUser());
            } catch (SecurityException e) {
                Log.e(TAG, Log.getStackTraceString(e));
            }
            if (shortcutInfos == null) {
                return Collections.EMPTY_LIST;
            }