Surround shortcut API calls with try-catch.
Bug: 29732661
Change-Id: Iba96eedab67e7715f34139c64f96b1a81ba30ea5
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 1e597d3..3e66654 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -1932,10 +1932,7 @@
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;
}
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
index 46ca931..97c384d 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
@@ -25,6 +25,7 @@
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 @@
* 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 @@
UserHandleCompat user = key.user;
List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
pinnedIds.remove(id);
- mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ try {
+ mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ } catch (SecurityException e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ }
}
}
@@ -103,7 +109,11 @@
UserHandleCompat user = key.user;
List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
pinnedIds.add(id);
- mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ try {
+ mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ } catch (SecurityException e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ }
}
}
@@ -111,16 +121,26 @@
public void startShortcut(String packageName, String id, Rect sourceBounds,
Bundle startActivityOptions, UserHandleCompat user) {
if (Utilities.isNycMR1OrAbove()) {
- mLauncherApps.startShortcut(packageName, id, sourceBounds,
- startActivityOptions, user.getUser());
+ 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 @@
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;
}