diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-12-16 15:04:51 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2016-12-16 15:05:09 -0800 |
commit | a52ecb0390c85afb385371bb844bb496c59ddf87 (patch) | |
tree | a3a0a6fff80e059a0a10181fb74164aa3e642758 /src/com/android/launcher3/compat | |
parent | 90a40570bc54506979d3610ee331deacfa7300ec (diff) | |
download | android_packages_apps_Trebuchet-a52ecb0390c85afb385371bb844bb496c59ddf87.tar.gz android_packages_apps_Trebuchet-a52ecb0390c85afb385371bb844bb496c59ddf87.tar.bz2 android_packages_apps_Trebuchet-a52ecb0390c85afb385371bb844bb496c59ddf87.zip |
Removing all compatibility code below Lollipop
Bug: 32745285
Change-Id: I62971908e3e4402941fab627bbdfd47be64473a3
Diffstat (limited to 'src/com/android/launcher3/compat')
15 files changed, 63 insertions, 707 deletions
diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java index 5388f2a3c..af43c02a7 100644 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java +++ b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java @@ -23,13 +23,10 @@ import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; -import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppWidgetProviderInfo; -import com.android.launcher3.Utilities; import com.android.launcher3.util.ComponentKey; import java.util.HashMap; @@ -40,15 +37,10 @@ public abstract class AppWidgetManagerCompat { private static final Object sInstanceLock = new Object(); private static AppWidgetManagerCompat sInstance; - public static AppWidgetManagerCompat getInstance(Context context) { synchronized (sInstanceLock) { if (sInstance == null) { - if (Utilities.ATLEAST_LOLLIPOP) { - sInstance = new AppWidgetManagerCompatVL(context.getApplicationContext()); - } else { - sInstance = new AppWidgetManagerCompatV16(context.getApplicationContext()); - } + sInstance = new AppWidgetManagerCompatVL(context.getApplicationContext()); } return sInstance; } @@ -73,20 +65,12 @@ public abstract class AppWidgetManagerCompat { public abstract List<AppWidgetProviderInfo> getAllProviders(); - public abstract String loadLabel(LauncherAppWidgetProviderInfo info); - public abstract boolean bindAppWidgetIdIfAllowed( int appWidgetId, AppWidgetProviderInfo info, Bundle options); - public abstract UserHandle getUser(LauncherAppWidgetProviderInfo info); - public abstract void startConfigActivity(AppWidgetProviderInfo info, int widgetId, Activity activity, AppWidgetHost host, int requestCode); - public abstract Drawable loadPreview(AppWidgetProviderInfo info); - - public abstract Drawable loadIcon(LauncherAppWidgetProviderInfo info, IconCache cache); - public abstract Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageWidth, int imageHeight); diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java deleted file mode 100644 index e7d8e2943..000000000 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2014 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.app.Activity; -import android.appwidget.AppWidgetHost; -import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetProviderInfo; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Bundle; -import android.os.Process; -import android.os.UserHandle; - -import com.android.launcher3.IconCache; -import com.android.launcher3.LauncherAppWidgetProviderInfo; -import com.android.launcher3.Utilities; -import com.android.launcher3.util.ComponentKey; - -import java.util.HashMap; -import java.util.List; - -class AppWidgetManagerCompatV16 extends AppWidgetManagerCompat { - - AppWidgetManagerCompatV16(Context context) { - super(context); - } - - @Override - public List<AppWidgetProviderInfo> getAllProviders() { - return mAppWidgetManager.getInstalledProviders(); - } - - @Override - public String loadLabel(LauncherAppWidgetProviderInfo info) { - return Utilities.trim(info.label); - } - - @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) - @Override - public boolean bindAppWidgetIdIfAllowed(int appWidgetId, AppWidgetProviderInfo info, - Bundle options) { - if (Utilities.ATLEAST_JB_MR1) { - return mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.provider, options); - } else { - return mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.provider); - } - } - - @Override - public UserHandle getUser(LauncherAppWidgetProviderInfo info) { - return Process.myUserHandle(); - } - - @Override - public void startConfigActivity(AppWidgetProviderInfo info, int widgetId, Activity activity, - AppWidgetHost host, int requestCode) { - Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); - intent.setComponent(info.configure); - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId); - Utilities.startActivityForResultSafely(activity, intent, requestCode); - } - - @Override - public Drawable loadPreview(AppWidgetProviderInfo info) { - return mContext.getPackageManager().getDrawable( - info.provider.getPackageName(), info.previewImage, null); - } - - @Override - public Drawable loadIcon(LauncherAppWidgetProviderInfo info, IconCache cache) { - return cache.getFullResIcon(info.provider.getPackageName(), info.icon); - } - - @Override - public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, - int imageWidth, int imageHeight) { - return bitmap; - } - - @Override - public LauncherAppWidgetProviderInfo findProvider( - ComponentName provider, UserHandle user) { - for (AppWidgetProviderInfo info : mAppWidgetManager.getInstalledProviders()) { - if (info.provider.equals(provider)) { - return LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info); - } - } - return null; - } - - @Override - public HashMap<ComponentKey, AppWidgetProviderInfo> getAllProvidersMap() { - HashMap<ComponentKey, AppWidgetProviderInfo> result = new HashMap<>(); - UserHandle user = Process.myUserHandle(); - for (AppWidgetProviderInfo info : mAppWidgetManager.getInstalledProviders()) { - result.put(new ComponentKey(info.provider, user), info); - } - return result; - } -} diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java index 0acf75373..56a7f46c0 100644 --- a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java +++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java @@ -16,7 +16,6 @@ package com.android.launcher3.compat; -import android.annotation.TargetApi; import android.app.Activity; import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetProviderInfo; @@ -31,15 +30,12 @@ import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.os.Build; import android.os.Bundle; -import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.view.View; import android.widget.Toast; -import com.android.launcher3.IconCache; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.R; import com.android.launcher3.util.ComponentKey; @@ -48,7 +44,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -@TargetApi(Build.VERSION_CODES.LOLLIPOP) class AppWidgetManagerCompatVL extends AppWidgetManagerCompat { private final UserManager mUserManager; @@ -70,11 +65,6 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat { } @Override - public String loadLabel(LauncherAppWidgetProviderInfo info) { - return info.getLabel(mPm); - } - - @Override public boolean bindAppWidgetIdIfAllowed(int appWidgetId, AppWidgetProviderInfo info, Bundle options) { return mAppWidgetManager.bindAppWidgetIdIfAllowed( @@ -82,14 +72,6 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat { } @Override - public UserHandle getUser(LauncherAppWidgetProviderInfo info) { - if (info.isCustomWidget) { - return Process.myUserHandle(); - } - return info.getProfile(); - } - - @Override public void startConfigActivity(AppWidgetProviderInfo info, int widgetId, Activity activity, AppWidgetHost host, int requestCode) { try { @@ -100,16 +82,6 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat { } @Override - public Drawable loadPreview(AppWidgetProviderInfo info) { - return info.loadPreviewImage(mContext, 0); - } - - @Override - public Drawable loadIcon(LauncherAppWidgetProviderInfo info, IconCache cache) { - return info.getIcon(mContext, cache); - } - - @Override public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageWidth, int imageHeight) { if (info.isCustomWidget || info.getProfile().equals(android.os.Process.myUserHandle())) { diff --git a/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java b/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java deleted file mode 100644 index d6978030f..000000000 --- a/src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2014 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.content.ComponentName; -import android.content.Context; -import android.content.pm.ActivityInfo; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.pm.ResolveInfo; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.os.Process; -import android.os.UserHandle; - - -public class LauncherActivityInfoCompatV16 extends LauncherActivityInfoCompat { - private final ResolveInfo mResolveInfo; - private final ActivityInfo mActivityInfo; - private final ComponentName mComponentName; - private final PackageManager mPm; - - LauncherActivityInfoCompatV16(Context context, ResolveInfo info) { - super(); - mResolveInfo = info; - mActivityInfo = info.activityInfo; - mComponentName = new ComponentName(mActivityInfo.packageName, mActivityInfo.name); - mPm = context.getPackageManager(); - } - - public ComponentName getComponentName() { - return mComponentName; - } - - public UserHandle getUser() { - return Process.myUserHandle(); - } - - public CharSequence getLabel() { - return mResolveInfo.loadLabel(mPm); - } - - public Drawable getIcon(int density) { - int iconRes = mResolveInfo.getIconResource(); - Resources resources = null; - Drawable icon = null; - // Get the preferred density icon from the app's resources - if (density != 0 && iconRes != 0) { - try { - resources = mPm.getResourcesForApplication(mActivityInfo.applicationInfo); - icon = resources.getDrawableForDensity(iconRes, density); - } catch (NameNotFoundException | Resources.NotFoundException exc) { - } - } - // Get the default density icon - if (icon == null) { - icon = mResolveInfo.loadIcon(mPm); - } - if (icon == null) { - resources = Resources.getSystem(); - icon = resources.getDrawableForDensity(android.R.mipmap.sym_def_app_icon, density); - } - return icon; - } - - public ApplicationInfo getApplicationInfo() { - return mActivityInfo.applicationInfo; - } - - public long getFirstInstallTime() { - try { - PackageInfo info = mPm.getPackageInfo(mActivityInfo.packageName, 0); - return info != null ? info.firstInstallTime : 0; - } catch (NameNotFoundException e) { - return 0; - } - } - - public String getName() { - return mActivityInfo.name; - } -} diff --git a/src/com/android/launcher3/compat/LauncherActivityInfoCompatVL.java b/src/com/android/launcher3/compat/LauncherActivityInfoCompatVL.java index 874b3c3ac..c3b959273 100644 --- a/src/com/android/launcher3/compat/LauncherActivityInfoCompatVL.java +++ b/src/com/android/launcher3/compat/LauncherActivityInfoCompatVL.java @@ -16,15 +16,12 @@ package com.android.launcher3.compat; -import android.annotation.TargetApi; import android.content.ComponentName; import android.content.pm.ApplicationInfo; import android.content.pm.LauncherActivityInfo; import android.graphics.drawable.Drawable; -import android.os.Build; import android.os.UserHandle; -@TargetApi(Build.VERSION_CODES.LOLLIPOP) public class LauncherActivityInfoCompatVL extends LauncherActivityInfoCompat { private LauncherActivityInfo mLauncherActivityInfo; diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java index c75298b0d..73ab36c8a 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompat.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java @@ -23,7 +23,6 @@ import android.graphics.Rect; import android.os.Bundle; import android.os.UserHandle; -import com.android.launcher3.Utilities; import com.android.launcher3.shortcuts.ShortcutInfoCompat; import java.util.List; @@ -51,11 +50,7 @@ public abstract class LauncherAppsCompat { public static LauncherAppsCompat getInstance(Context context) { synchronized (sInstanceLock) { if (sInstance == null) { - if (Utilities.ATLEAST_LOLLIPOP) { - sInstance = new LauncherAppsCompatVL(context.getApplicationContext()); - } else { - sInstance = new LauncherAppsCompatV16(context.getApplicationContext()); - } + sInstance = new LauncherAppsCompatVL(context.getApplicationContext()); } return sInstance; } @@ -73,5 +68,4 @@ public abstract class LauncherAppsCompat { public abstract boolean isPackageEnabledForProfile(String packageName, UserHandle user); public abstract boolean isActivityEnabledForProfile(ComponentName component, UserHandle user); - public abstract boolean isPackageSuspendedForProfile(String packageName, UserHandle user); } diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java deleted file mode 100644 index 0d1efa85e..000000000 --- a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (C) 2014 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.content.BroadcastReceiver; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.ActivityInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.pm.ResolveInfo; -import android.graphics.Rect; -import android.net.Uri; -import android.os.Bundle; -import android.os.Process; -import android.os.UserHandle; -import android.provider.Settings; - -import com.android.launcher3.Utilities; -import com.android.launcher3.util.PackageManagerHelper; -import com.android.launcher3.util.Thunk; - -import java.util.ArrayList; -import java.util.List; - -/** - * Version of {@link LauncherAppsCompat} for devices with API level 16. - * Devices Pre-L don't support multiple profiles in one launcher so - * user parameters are ignored and all methods operate on the current user. - */ -public class LauncherAppsCompatV16 extends LauncherAppsCompat { - - private PackageManager mPm; - private Context mContext; - private List<OnAppsChangedCallbackCompat> mCallbacks - = new ArrayList<OnAppsChangedCallbackCompat>(); - private PackageMonitor mPackageMonitor; - - LauncherAppsCompatV16(Context context) { - mPm = context.getPackageManager(); - mContext = context; - mPackageMonitor = new PackageMonitor(); - } - - public List<LauncherActivityInfoCompat> getActivityList(String packageName, - UserHandle user) { - final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); - mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); - mainIntent.setPackage(packageName); - List<ResolveInfo> infos = mPm.queryIntentActivities(mainIntent, 0); - List<LauncherActivityInfoCompat> list = - new ArrayList<LauncherActivityInfoCompat>(infos.size()); - for (ResolveInfo info : infos) { - list.add(new LauncherActivityInfoCompatV16(mContext, info)); - } - return list; - } - - public LauncherActivityInfoCompat resolveActivity(Intent intent, UserHandle user) { - ResolveInfo info = mPm.resolveActivity(intent, 0); - if (info != null) { - return new LauncherActivityInfoCompatV16(mContext, info); - } - return null; - } - - public void startActivityForProfile(ComponentName component, UserHandle user, - Rect sourceBounds, Bundle opts) { - Intent launchIntent = new Intent(Intent.ACTION_MAIN); - launchIntent.addCategory(Intent.CATEGORY_LAUNCHER); - launchIntent.setComponent(component); - launchIntent.setSourceBounds(sourceBounds); - launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(launchIntent, opts); - } - - public void showAppDetailsForProfile(ComponentName component, UserHandle user) { - String packageName = component.getPackageName(); - Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.fromParts("package", packageName, null)); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | - Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - mContext.startActivity(intent, null); - } - - public synchronized void addOnAppsChangedCallback(OnAppsChangedCallbackCompat callback) { - if (callback != null && !mCallbacks.contains(callback)) { - mCallbacks.add(callback); - if (mCallbacks.size() == 1) { - registerForPackageIntents(); - } - } - } - - public synchronized void removeOnAppsChangedCallback(OnAppsChangedCallbackCompat callback) { - mCallbacks.remove(callback); - if (mCallbacks.size() == 0) { - unregisterForPackageIntents(); - } - } - - public boolean isPackageEnabledForProfile(String packageName, UserHandle user) { - return PackageManagerHelper.isAppEnabled(mPm, packageName); - } - - public boolean isActivityEnabledForProfile(ComponentName component, UserHandle user) { - try { - ActivityInfo info = mPm.getActivityInfo(component, 0); - return info != null && info.isEnabled(); - } catch (NameNotFoundException e) { - return false; - } - } - - public boolean isPackageSuspendedForProfile(String packageName, UserHandle user) { - return false; - } - - private void unregisterForPackageIntents() { - mContext.unregisterReceiver(mPackageMonitor); - } - - private void registerForPackageIntents() { - IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); - filter.addAction(Intent.ACTION_PACKAGE_REMOVED); - filter.addAction(Intent.ACTION_PACKAGE_CHANGED); - filter.addDataScheme("package"); - mContext.registerReceiver(mPackageMonitor, filter); - filter = new IntentFilter(); - filter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE); - filter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); - mContext.registerReceiver(mPackageMonitor, filter); - } - - @Thunk synchronized List<OnAppsChangedCallbackCompat> getCallbacks() { - return new ArrayList<OnAppsChangedCallbackCompat>(mCallbacks); - } - - @Thunk class PackageMonitor extends BroadcastReceiver { - public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - final UserHandle user = Process.myUserHandle(); - - if (Intent.ACTION_PACKAGE_CHANGED.equals(action) - || Intent.ACTION_PACKAGE_REMOVED.equals(action) - || Intent.ACTION_PACKAGE_ADDED.equals(action)) { - final String packageName = intent.getData().getSchemeSpecificPart(); - final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); - - if (packageName == null || packageName.length() == 0) { - // they sent us a bad intent - return; - } - if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) { - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackageChanged(packageName, user); - } - } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) { - if (!replacing) { - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackageRemoved(packageName, user); - } - } - // else, we are replacing the package, so a PACKAGE_ADDED will be sent - // later, we will update the package at this time - } else if (Intent.ACTION_PACKAGE_ADDED.equals(action)) { - if (!replacing) { - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackageAdded(packageName, user); - } - } else { - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackageChanged(packageName, user); - } - } - } - } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action)) { - // EXTRA_REPLACING is available Kitkat onwards. For lower devices, it is broadcasted - // when moving a package or mounting/un-mounting external storage. Assume that - // it is a replacing operation. - final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, - !Utilities.ATLEAST_KITKAT); - String[] packages = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackagesAvailable(packages, user, replacing); - } - } else if (Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(action)) { - // This intent is broadcasted when moving a package or mounting/un-mounting - // external storage. - // However on Kitkat this is also sent when a package is being updated, and - // contains an extra Intent.EXTRA_REPLACING=true for that case. - // Using false as default for Intent.EXTRA_REPLACING gives correct value on - // lower devices as the intent is not sent when the app is updating/replacing. - final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); - String[] packages = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); - for (OnAppsChangedCallbackCompat callback : getCallbacks()) { - callback.onPackagesUnavailable(packages, user, replacing); - } - } - } - } -} diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java index f408da0aa..60f9fabf0 100644 --- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java +++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java @@ -16,7 +16,6 @@ package com.android.launcher3.compat; -import android.annotation.TargetApi; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -24,7 +23,6 @@ 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; @@ -36,32 +34,30 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -@TargetApi(Build.VERSION_CODES.LOLLIPOP) -public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { +public class LauncherAppsCompatVL extends LauncherAppsCompat { protected LauncherApps mLauncherApps; - private Map<OnAppsChangedCallbackCompat, WrappedCallback> mCallbacks - = new HashMap<OnAppsChangedCallbackCompat, WrappedCallback>(); + private Map<OnAppsChangedCallbackCompat, WrappedCallback> mCallbacks = new HashMap<>(); LauncherAppsCompatVL(Context context) { - super(context); - mLauncherApps = (LauncherApps) context.getSystemService("launcherapps"); + mLauncherApps = (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE); } + @Override public List<LauncherActivityInfoCompat> getActivityList(String packageName, UserHandle user) { List<LauncherActivityInfo> list = mLauncherApps.getActivityList(packageName, user); if (list.size() == 0) { return Collections.emptyList(); } - ArrayList<LauncherActivityInfoCompat> compatList = - new ArrayList<LauncherActivityInfoCompat>(list.size()); + ArrayList<LauncherActivityInfoCompat> compatList = new ArrayList<>(list.size()); for (LauncherActivityInfo info : list) { compatList.add(new LauncherActivityInfoCompatVL(info)); } return compatList; } + @Override public LauncherActivityInfoCompat resolveActivity(Intent intent, UserHandle user) { LauncherActivityInfo activity = mLauncherApps.resolveActivity(intent, user); if (activity != null) { @@ -71,15 +67,18 @@ public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { } } + @Override public void startActivityForProfile(ComponentName component, UserHandle user, Rect sourceBounds, Bundle opts) { mLauncherApps.startMainActivity(component, user, sourceBounds, opts); } + @Override public void showAppDetailsForProfile(ComponentName component, UserHandle user) { mLauncherApps.startAppDetailsActivity(component, user, null, null); } + @Override public void addOnAppsChangedCallback(LauncherAppsCompat.OnAppsChangedCallbackCompat callback) { WrappedCallback wrappedCallback = new WrappedCallback(callback); synchronized (mCallbacks) { @@ -88,9 +87,9 @@ public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { mLauncherApps.registerCallback(wrappedCallback); } - public void removeOnAppsChangedCallback( - LauncherAppsCompat.OnAppsChangedCallbackCompat callback) { - WrappedCallback wrappedCallback = null; + @Override + public void removeOnAppsChangedCallback(OnAppsChangedCallbackCompat callback) { + final WrappedCallback wrappedCallback; synchronized (mCallbacks) { wrappedCallback = mCallbacks.remove(callback); } @@ -99,18 +98,16 @@ public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { } } + @Override public boolean isPackageEnabledForProfile(String packageName, UserHandle user) { return mLauncherApps.isPackageEnabled(packageName, user); } + @Override public boolean isActivityEnabledForProfile(ComponentName component, UserHandle user) { return mLauncherApps.isActivityEnabled(component, user); } - public boolean isPackageSuspendedForProfile(String packageName, UserHandle user) { - return false; - } - private static class WrappedCallback extends LauncherApps.Callback { private LauncherAppsCompat.OnAppsChangedCallbackCompat mCallback; @@ -147,7 +144,6 @@ public class LauncherAppsCompatVL extends LauncherAppsCompatV16 { mCallback.onPackagesUnsuspended(packageNames, user); } - @Override public void onShortcutsChanged(String packageName, List<ShortcutInfo> shortcuts, UserHandle user) { List<ShortcutInfoCompat> shortcutInfoCompats = new ArrayList<>(shortcuts.size()); diff --git a/src/com/android/launcher3/compat/PackageInstallerCompat.java b/src/com/android/launcher3/compat/PackageInstallerCompat.java index ec5014d7c..c7fe0cec8 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompat.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompat.java @@ -18,8 +18,6 @@ package com.android.launcher3.compat; import android.content.Context; -import com.android.launcher3.Utilities; - import java.util.HashMap; public abstract class PackageInstallerCompat { @@ -34,11 +32,7 @@ public abstract class PackageInstallerCompat { public static PackageInstallerCompat getInstance(Context context) { synchronized (sInstanceLock) { if (sInstance == null) { - if (Utilities.ATLEAST_LOLLIPOP) { - sInstance = new PackageInstallerCompatVL(context); - } else { - sInstance = new PackageInstallerCompatV16(); - } + sInstance = new PackageInstallerCompatVL(context); } return sInstance; } diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java b/src/com/android/launcher3/compat/PackageInstallerCompatV16.java deleted file mode 100644 index 654e34968..000000000 --- a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2014 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 java.util.HashMap; - -public class PackageInstallerCompatV16 extends PackageInstallerCompat { - - PackageInstallerCompatV16() { } - - @Override - public void onStop() { } - - @Override - public HashMap<String, Integer> updateAndGetActiveSessionCache() { - return new HashMap<>(); - } -} diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index 192cb0cf1..953d93df9 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -16,12 +16,10 @@ package com.android.launcher3.compat; -import android.annotation.TargetApi; import android.content.Context; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller.SessionCallback; import android.content.pm.PackageInstaller.SessionInfo; -import android.os.Build; import android.os.Handler; import android.os.Process; import android.os.UserHandle; @@ -34,7 +32,6 @@ import com.android.launcher3.util.Thunk; import java.util.HashMap; -@TargetApi(Build.VERSION_CODES.LOLLIPOP) public class PackageInstallerCompatVL extends PackageInstallerCompat { @Thunk final SparseArray<String> mActiveSessions = new SparseArray<>(); diff --git a/src/com/android/launcher3/compat/UserManagerCompat.java b/src/com/android/launcher3/compat/UserManagerCompat.java index 24c95b11e..25808d21c 100644 --- a/src/com/android/launcher3/compat/UserManagerCompat.java +++ b/src/com/android/launcher3/compat/UserManagerCompat.java @@ -39,12 +39,8 @@ public abstract class UserManagerCompat { sInstance = new UserManagerCompatVN(context.getApplicationContext()); } else if (Utilities.ATLEAST_MARSHMALLOW) { sInstance = new UserManagerCompatVM(context.getApplicationContext()); - } else if (Utilities.ATLEAST_LOLLIPOP) { - sInstance = new UserManagerCompatVL(context.getApplicationContext()); - } else if (Utilities.ATLEAST_JB_MR1) { - sInstance = new UserManagerCompatV17(context.getApplicationContext()); } else { - sInstance = new UserManagerCompatV16(); + sInstance = new UserManagerCompatVL(context.getApplicationContext()); } } return sInstance; diff --git a/src/com/android/launcher3/compat/UserManagerCompatV16.java b/src/com/android/launcher3/compat/UserManagerCompatV16.java deleted file mode 100644 index 60374aa15..000000000 --- a/src/com/android/launcher3/compat/UserManagerCompatV16.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2014 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.os.Process; -import android.os.UserHandle; - -import java.util.ArrayList; -import java.util.List; - -public class UserManagerCompatV16 extends UserManagerCompat { - - UserManagerCompatV16() { - } - - public List<UserHandle> getUserProfiles() { - List<UserHandle> profiles = new ArrayList<UserHandle>(1); - profiles.add(Process.myUserHandle()); - return profiles; - } - - public UserHandle getUserForSerialNumber(long serialNumber) { - return Process.myUserHandle(); - } - - public long getSerialNumberForUser(UserHandle user) { - return 0; - } - - public CharSequence getBadgedLabelForUser(CharSequence label, UserHandle user) { - return label; - } - - @Override - public long getUserCreationTime(UserHandle user) { - return 0; - } - - @Override - public void enableAndResetCache() { - } - - @Override - public boolean isQuietModeEnabled(UserHandle user) { - return false; - } - - @Override - public boolean isUserUnlocked(UserHandle user) { - return true; - } - - @Override - public boolean isDemoUser() { - return false; - } -} diff --git a/src/com/android/launcher3/compat/UserManagerCompatV17.java b/src/com/android/launcher3/compat/UserManagerCompatV17.java deleted file mode 100644 index 08e894750..000000000 --- a/src/com/android/launcher3/compat/UserManagerCompatV17.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2014 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.os.Build; -import android.os.Process; -import android.os.UserHandle; -import android.os.UserManager; - -import com.android.launcher3.util.LongArrayMap; - -import java.util.HashMap; - -@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) -public class UserManagerCompatV17 extends UserManagerCompatV16 { - - protected LongArrayMap<UserHandle> mUsers; - // Create a separate reverse map as LongArrayMap.indexOfValue checks if objects are same - // and not {@link Object#equals} - protected HashMap<UserHandle, Long> mUserToSerialMap; - - protected UserManager mUserManager; - - UserManagerCompatV17(Context context) { - mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); - } - - public long getSerialNumberForUser(UserHandle user) { - synchronized (this) { - if (mUserToSerialMap != null) { - Long serial = mUserToSerialMap.get(user); - return serial == null ? 0 : serial; - } - } - return mUserManager.getSerialNumberForUser(user); - } - - public UserHandle getUserForSerialNumber(long serialNumber) { - synchronized (this) { - if (mUsers != null) { - return mUsers.get(serialNumber); - } - } - return mUserManager.getUserForSerialNumber(serialNumber); - } - - @Override - public void enableAndResetCache() { - synchronized (this) { - mUsers = new LongArrayMap<>(); - mUserToSerialMap = new HashMap<>(); - UserHandle myUser = Process.myUserHandle(); - long serial = mUserManager.getSerialNumberForUser(myUser); - mUsers.put(serial, myUser); - mUserToSerialMap.put(myUser, serial); - } - } -} - diff --git a/src/com/android/launcher3/compat/UserManagerCompatVL.java b/src/com/android/launcher3/compat/UserManagerCompatVL.java index 277460281..45525f521 100644 --- a/src/com/android/launcher3/compat/UserManagerCompatVL.java +++ b/src/com/android/launcher3/compat/UserManagerCompatVL.java @@ -16,12 +16,11 @@ package com.android.launcher3.compat; -import android.annotation.TargetApi; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.os.Build; import android.os.UserHandle; +import android.os.UserManager; import com.android.launcher3.Utilities; import com.android.launcher3.util.LongArrayMap; @@ -31,20 +30,61 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; -@TargetApi(Build.VERSION_CODES.LOLLIPOP) -public class UserManagerCompatVL extends UserManagerCompatV17 { +public class UserManagerCompatVL extends UserManagerCompat { private static final String USER_CREATION_TIME_KEY = "user_creation_time_"; + protected final UserManager mUserManager; private final PackageManager mPm; private final Context mContext; + protected LongArrayMap<UserHandle> mUsers; + // Create a separate reverse map as LongArrayMap.indexOfValue checks if objects are same + // and not {@link Object#equals} + protected HashMap<UserHandle, Long> mUserToSerialMap; + UserManagerCompatVL(Context context) { - super(context); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mPm = context.getPackageManager(); mContext = context; } @Override + public long getSerialNumberForUser(UserHandle user) { + synchronized (this) { + if (mUserToSerialMap != null) { + Long serial = mUserToSerialMap.get(user); + return serial == null ? 0 : serial; + } + } + return mUserManager.getSerialNumberForUser(user); + } + + @Override + public UserHandle getUserForSerialNumber(long serialNumber) { + synchronized (this) { + if (mUsers != null) { + return mUsers.get(serialNumber); + } + } + return mUserManager.getUserForSerialNumber(serialNumber); + } + + @Override + public boolean isQuietModeEnabled(UserHandle user) { + return false; + } + + @Override + public boolean isUserUnlocked(UserHandle user) { + return true; + } + + @Override + public boolean isDemoUser() { + return false; + } + + @Override public void enableAndResetCache() { synchronized (this) { mUsers = new LongArrayMap<>(); |