summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-12-16 15:04:51 -0800
committerSunny Goyal <sunnygoyal@google.com>2016-12-16 15:05:09 -0800
commita52ecb0390c85afb385371bb844bb496c59ddf87 (patch)
treea3a0a6fff80e059a0a10181fb74164aa3e642758 /src/com/android/launcher3/compat
parent90a40570bc54506979d3610ee331deacfa7300ec (diff)
downloadandroid_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')
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompat.java18
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java120
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java28
-rw-r--r--src/com/android/launcher3/compat/LauncherActivityInfoCompatV16.java98
-rw-r--r--src/com/android/launcher3/compat/LauncherActivityInfoCompatVL.java3
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompat.java8
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatV16.java218
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVL.java32
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompat.java8
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatV16.java32
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java3
-rw-r--r--src/com/android/launcher3/compat/UserManagerCompat.java6
-rw-r--r--src/com/android/launcher3/compat/UserManagerCompatV16.java71
-rw-r--r--src/com/android/launcher3/compat/UserManagerCompatV17.java75
-rw-r--r--src/com/android/launcher3/compat/UserManagerCompatVL.java50
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<>();