diff options
Diffstat (limited to 'src/com/android/launcher3/compat')
4 files changed, 181 insertions, 3 deletions
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java index 237a9e9fb..338106427 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompat.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java @@ -19,10 +19,13 @@ package com.android.launcher3.compat; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.LauncherApps; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Bundle; import com.android.launcher3.Utilities; +import com.android.launcher3.shortcuts.ShortcutInfoCompat; import java.util.List; @@ -45,6 +48,8 @@ public abstract class LauncherAppsCompat { void onPackagesUnavailable(String[] packageNames, UserHandleCompat user, boolean replacing); void onPackagesSuspended(String[] packageNames, UserHandleCompat user); void onPackagesUnsuspended(String[] packageNames, UserHandleCompat user); + void onShortcutsChanged(String packageName, List<ShortcutInfoCompat> shortcuts, + UserHandleCompat user); } protected LauncherAppsCompat() { @@ -56,7 +61,9 @@ public abstract class LauncherAppsCompat { public static LauncherAppsCompat getInstance(Context context) { synchronized (sInstanceLock) { if (sInstance == null) { - if (Utilities.ATLEAST_LOLLIPOP) { + if (Utilities.isNycOrAbove()) { + sInstance = new LauncherAppsCompatVNMR1(context.getApplicationContext()); + } else if (Utilities.ATLEAST_LOLLIPOP) { sInstance = new LauncherAppsCompatVL(context.getApplicationContext()); } else { sInstance = new LauncherAppsCompatV16(context.getApplicationContext()); @@ -79,4 +86,11 @@ public abstract class LauncherAppsCompat { public abstract boolean isActivityEnabledForProfile(ComponentName component, UserHandleCompat user); public abstract boolean isPackageSuspendedForProfile(String packageName, UserHandleCompat user); + public abstract List<ShortcutInfoCompat> getShortcuts(LauncherApps.ShortcutQuery q, + UserHandleCompat userHandle); + public abstract void pinShortcuts(String packageName, List<String> pinnedIds, + UserHandleCompat userHandle); + public abstract void startShortcut(String packageName, String id, Rect sourceBounds, + Bundle startActivityOptions, UserHandleCompat user); + public abstract Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density); } diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java index 4e2fc055e..1a144e859 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java @@ -22,15 +22,18 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; +import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import com.android.launcher3.Utilities; +import com.android.launcher3.shortcuts.ShortcutInfoCompat; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.Thunk; @@ -130,6 +133,29 @@ public class LauncherAppsCompatV16 extends LauncherAppsCompat { return false; } + @Override + public List<ShortcutInfoCompat> getShortcuts(LauncherApps.ShortcutQuery q, + UserHandleCompat userHandle) { + return null; + } + + @Override + public void pinShortcuts(String packageName, List<String> pinnedIds, + UserHandleCompat userHandle) { + // Not supported, so do nothing. + } + + @Override + public void startShortcut(String packageName, String id, Rect sourceBounds, + Bundle startActivityOptions, UserHandleCompat user) { + // Not supported, so do nothing. + } + + @Override + public Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density) { + return null; + } + private void unregisterForPackageIntents() { mContext.unregisterReceiver(mPackageMonitor); } diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java index 7270d023b..d97bf2f74 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java @@ -22,11 +22,14 @@ import android.content.Context; import android.content.Intent; import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; +import android.content.pm.ShortcutInfo; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; import android.os.UserHandle; +import com.android.launcher3.shortcuts.ShortcutInfoCompat; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -34,7 +37,7 @@ import java.util.List; import java.util.Map; @TargetApi(Build.VERSION_CODES.LOLLIPOP) -public class LauncherAppsCompatVL extends LauncherAppsCompat { +public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { protected LauncherApps mLauncherApps; @@ -42,7 +45,7 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat { = new HashMap<OnAppsChangedCallbackCompat, WrappedCallback>(); LauncherAppsCompatVL(Context context) { - super(); + super(context); mLauncherApps = (LauncherApps) context.getSystemService("launcherapps"); } @@ -146,6 +149,18 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat { public void onPackagesUnsuspended(String[] packageNames, UserHandle user) { mCallback.onPackagesUnsuspended(packageNames, UserHandleCompat.fromUser(user)); } + + @Override + public void onShortcutsChanged(String packageName, List<ShortcutInfo> shortcuts, + UserHandle user) { + List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcuts.size()); + for (ShortcutInfo shortcutInfo : shortcuts) { + shortcutInfoCompats.add(new ShortcutInfoCompat(shortcutInfo)); + } + + mCallback.onShortcutsChanged(packageName, shortcutInfoCompats, + UserHandleCompat.fromUser(user)); + } } } diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVNMR1.java b/src/com/android/launcher3/compat/LauncherAppsCompatVNMR1.java new file mode 100644 index 000000000..0c1db1385 --- /dev/null +++ b/src/com/android/launcher3/compat/LauncherAppsCompatVNMR1.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.compat; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.pm.LauncherApps; +import android.content.pm.ShortcutInfo; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Bundle; +import android.os.UserHandle; + +import com.android.launcher3.shortcuts.ShortcutInfoCompat; + +import java.util.ArrayList; +import java.util.List; + +@TargetApi(Build.VERSION_CODES.N) +public class LauncherAppsCompatVNMR1 extends LauncherAppsCompatVL { + + LauncherAppsCompatVNMR1(Context context) { + super(context); + } + + @Override + public List<ShortcutInfoCompat> getShortcuts(LauncherApps.ShortcutQuery q, + UserHandleCompat userHandle) { + List<ShortcutInfo> shortcutInfos = mLauncherApps.getShortcuts(q, userHandle.getUser()); + if (shortcutInfos == null) { + return null; + } + List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcutInfos.size()); + for (ShortcutInfo shortcutInfo : shortcutInfos) { + shortcutInfoCompats.add(new ShortcutInfoCompat(shortcutInfo)); + } + return shortcutInfoCompats; + } + + @Override + public void pinShortcuts(String packageName, List<String> pinnedIds, + UserHandleCompat userHandle) { + mLauncherApps.pinShortcuts(packageName, pinnedIds, userHandle.getUser()); + } + + @Override + public void startShortcut(String packageName, String id, Rect sourceBounds, + Bundle startActivityOptions, UserHandleCompat user) { + mLauncherApps.startShortcut(packageName, id, sourceBounds, + startActivityOptions, user.getUser()); + } + + @Override + public Drawable getShortcutIconDrawable(ShortcutInfoCompat shortcutInfo, int density) { + return mLauncherApps.getShortcutIconDrawable(shortcutInfo.getShortcutInfo(), density); + } + + private static class WrappedCallback extends LauncherApps.Callback { + private OnAppsChangedCallbackCompat mCallback; + + public WrappedCallback(OnAppsChangedCallbackCompat callback) { + mCallback = callback; + } + + public void onPackageRemoved(String packageName, UserHandle user) { + mCallback.onPackageRemoved(packageName, UserHandleCompat.fromUser(user)); + } + + public void onPackageAdded(String packageName, UserHandle user) { + mCallback.onPackageAdded(packageName, UserHandleCompat.fromUser(user)); + } + + public void onPackageChanged(String packageName, UserHandle user) { + mCallback.onPackageChanged(packageName, UserHandleCompat.fromUser(user)); + } + + public void onPackagesAvailable(String[] packageNames, UserHandle user, boolean replacing) { + mCallback.onPackagesAvailable(packageNames, UserHandleCompat.fromUser(user), replacing); + } + + public void onPackagesUnavailable(String[] packageNames, UserHandle user, + boolean replacing) { + mCallback.onPackagesUnavailable(packageNames, UserHandleCompat.fromUser(user), + replacing); + } + + public void onPackagesSuspended(String[] packageNames, UserHandle user) { + mCallback.onPackagesSuspended(packageNames, UserHandleCompat.fromUser(user)); + } + + public void onPackagesUnsuspended(String[] packageNames, UserHandle user) { + mCallback.onPackagesUnsuspended(packageNames, UserHandleCompat.fromUser(user)); + } + + @Override + public void onShortcutsChanged(String packageName, List<ShortcutInfo> shortcuts, + UserHandle user) { + List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcuts.size()); + for (ShortcutInfo shortcutInfo : shortcuts) { + shortcutInfoCompats.add(new ShortcutInfoCompat(shortcutInfo)); + } + + mCallback.onShortcutsChanged(packageName, shortcutInfoCompats, + UserHandleCompat.fromUser(user)); + } + } +} + |