From f25cea452f3807a4a914a9548ebafad168c89704 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Fri, 1 Jul 2016 13:01:33 -0700 Subject: [PATCH] Use reflection to call LauncherApps.startShortcut(). This is necessary because it now returns void instead of boolean, but we don't yet have the latest SDK with this change to compile against. Change-Id: Ie4ca718bbe828fd9addfaf003a74b35d32410891 --- .../launcher3/shortcuts/DeepShortcutManager.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java index 0d5102fe35..8bceda7f12 100644 --- a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java +++ b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java @@ -25,6 +25,7 @@ import android.content.pm.ShortcutInfo; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.UserHandle; import android.util.Log; import com.android.launcher3.ItemInfo; @@ -32,6 +33,7 @@ import com.android.launcher3.LauncherSettings; import com.android.launcher3.Utilities; import com.android.launcher3.compat.UserHandleCompat; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -129,10 +131,16 @@ public class DeepShortcutManager { Bundle startActivityOptions, UserHandleCompat user) { if (Utilities.isNycMR1OrAbove()) { try { - mLauncherApps.startShortcut(packageName, id, sourceBounds, - startActivityOptions, user.getUser()); + // TODO: remove reflection once updated SDK is ready. + // mLauncherApps.startShortcut(packageName, id, sourceBounds, + // startActivityOptions, user.getUser()); + mLauncherApps.getClass().getMethod("startShortcut", String.class, String.class, + Rect.class, Bundle.class, UserHandle.class).invoke(mLauncherApps, + packageName, id, sourceBounds, startActivityOptions, user.getUser()); } catch (SecurityException e) { Log.e(TAG, Log.getStackTraceString(e)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); } } }