summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-06-23 14:17:24 -0700
committerSunny Goyal <sunnygoyal@google.com>2016-06-23 14:55:56 -0700
commit9994b2b171ab78d1d93e8a25086d6853f766e80f (patch)
tree52816518c6ec6adc6b2766f6a891c0b3223ad052 /src/com/android/launcher3/shortcuts/DeepShortcutManager.java
parentaac20dba113d3c12a964357a56b0c2dfb9dcb0d7 (diff)
downloadandroid_packages_apps_Trebuchet-9994b2b171ab78d1d93e8a25086d6853f766e80f.tar.gz
android_packages_apps_Trebuchet-9994b2b171ab78d1d93e8a25086d6853f766e80f.tar.bz2
android_packages_apps_Trebuchet-9994b2b171ab78d1d93e8a25086d6853f766e80f.zip
Making some shortcut manager calls protected by MR1 version check
Change-Id: Ifdfa95a58aa18a825c1838c61055928dbe0ea3be
Diffstat (limited to 'src/com/android/launcher3/shortcuts/DeepShortcutManager.java')
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutManager.java102
1 files changed, 72 insertions, 30 deletions
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
index e2e06af9a..46ca93148 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
@@ -19,30 +19,37 @@ package com.android.launcher3.shortcuts;
import android.annotation.TargetApi;
import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.LauncherApps;
import android.content.pm.LauncherApps.ShortcutQuery;
-import android.os.Build;
-import android.os.Process;
-import android.util.Log;
+import android.content.pm.ShortcutInfo;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
-import com.android.launcher3.compat.LauncherAppsCompat;
+import com.android.launcher3.Utilities;
import com.android.launcher3.compat.UserHandleCompat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-import java.util.Map;
/**
* Performs operations related to deep shortcuts, such as querying for them, pinning them, etc.
*/
-@TargetApi(Build.VERSION_CODES.N)
public class DeepShortcutManager {
- private static final int FLAG_GET_ALL = ShortcutQuery.FLAG_GET_DYNAMIC
- | ShortcutQuery.FLAG_GET_PINNED | ShortcutQuery.FLAG_GET_MANIFEST;
- private final LauncherAppsCompat mLauncherApps;
+ // TODO: Replace this with platform constants when the new sdk is available.
+ public static final int FLAG_MATCH_DYNAMIC = 1 << 0;
+ public static final int FLAG_MATCH_MANIFEST = 1 << 3;
+ public static final int FLAG_MATCH_PINNED = 1 << 1;
+
+ private static final int FLAG_GET_ALL =
+ FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST;
+
+ private final LauncherApps mLauncherApps;
public DeepShortcutManager(Context context, ShortcutCache shortcutCache) {
- mLauncherApps = LauncherAppsCompat.getInstance(context);
+ mLauncherApps = (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE);
}
public void onShortcutsChanged(List<ShortcutInfoCompat> shortcuts) {
@@ -72,26 +79,48 @@ public class DeepShortcutManager {
* Removes the given shortcut from the current list of pinned shortcuts.
* (Runs on background thread)
*/
+ @TargetApi(25)
public void unpinShortcut(final ShortcutKey key) {
- String packageName = key.componentName.getPackageName();
- String id = key.id;
- UserHandleCompat user = key.user;
- List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
- pinnedIds.remove(id);
- mLauncherApps.pinShortcuts(packageName, pinnedIds, user);
+ if (Utilities.isNycMR1OrAbove()) {
+ String packageName = key.componentName.getPackageName();
+ String id = key.id;
+ UserHandleCompat user = key.user;
+ List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
+ pinnedIds.remove(id);
+ mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ }
}
/**
* Adds the given shortcut to the current list of pinned shortcuts.
* (Runs on background thread)
*/
+ @TargetApi(25)
public void pinShortcut(final ShortcutKey key) {
- String packageName = key.componentName.getPackageName();
- String id = key.id;
- UserHandleCompat user = key.user;
- List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
- pinnedIds.add(id);
- mLauncherApps.pinShortcuts(packageName, pinnedIds, user);
+ if (Utilities.isNycMR1OrAbove()) {
+ String packageName = key.componentName.getPackageName();
+ String id = key.id;
+ UserHandleCompat user = key.user;
+ List<String> pinnedIds = extractIds(queryForPinnedShortcuts(packageName, user));
+ pinnedIds.add(id);
+ mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
+ }
+ }
+
+ @TargetApi(25)
+ public void startShortcut(String packageName, String id, Rect sourceBounds,
+ Bundle startActivityOptions, UserHandleCompat user) {
+ if (Utilities.isNycMR1OrAbove()) {
+ mLauncherApps.startShortcut(packageName, id, sourceBounds,
+ startActivityOptions, user.getUser());
+ }
+ }
+
+ @TargetApi(25)
+ public Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density) {
+ return Utilities.isNycMR1OrAbove()
+ ? mLauncherApps.getShortcutIconDrawable(shortcutInfo.getShortcutInfo(), density)
+ : null;
}
/**
@@ -101,7 +130,7 @@ public class DeepShortcutManager {
*/
public List<ShortcutInfoCompat> queryForPinnedShortcuts(String packageName,
UserHandleCompat user) {
- return query(ShortcutQuery.FLAG_GET_PINNED, packageName, null, null, user);
+ return query(FLAG_MATCH_PINNED, packageName, null, null, user);
}
public List<ShortcutInfoCompat> queryForAllShortcuts(UserHandleCompat user) {
@@ -122,15 +151,28 @@ public class DeepShortcutManager {
*
* TODO: Use the cache to optimize this so we don't make an RPC every time.
*/
+ @TargetApi(25)
private List<ShortcutInfoCompat> query(int flags, String packageName,
ComponentName activity, List<String> shortcutIds, UserHandleCompat user) {
- ShortcutQuery q = new ShortcutQuery();
- q.setQueryFlags(flags);
- if (packageName != null) {
- q.setPackage(packageName);
- q.setActivity(activity);
- q.setShortcutIds(shortcutIds);
+ if (Utilities.isNycMR1OrAbove()) {
+ ShortcutQuery q = new ShortcutQuery();
+ q.setQueryFlags(flags);
+ if (packageName != null) {
+ q.setPackage(packageName);
+ q.setActivity(activity);
+ q.setShortcutIds(shortcutIds);
+ }
+ List<ShortcutInfo> shortcutInfos = mLauncherApps.getShortcuts(q, user.getUser());
+ if (shortcutInfos == null) {
+ return Collections.EMPTY_LIST;
+ }
+ List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcutInfos.size());
+ for (ShortcutInfo shortcutInfo : shortcutInfos) {
+ shortcutInfoCompats.add(new ShortcutInfoCompat(shortcutInfo));
+ }
+ return shortcutInfoCompats;
+ } else {
+ return Collections.EMPTY_LIST;
}
- return mLauncherApps.getShortcuts(q, user);
}
}