summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2017-04-05 13:14:01 -0700
committerTony Wickham <twickham@google.com>2017-04-05 13:14:01 -0700
commit6c300c89ecbac04c557a4695b1597ed35150f420 (patch)
tree086e9d50f1914a021267b61be27fab1f06803cb5 /src/com/android/launcher3/compat
parent2dbcfb6cb01ebf7563810aa0b7f1c6638053faed (diff)
parent128b7e59a12ae861be81adb38c3eb9ccde61c6b5 (diff)
downloadandroid_packages_apps_Trebuchet-6c300c89ecbac04c557a4695b1597ed35150f420.tar.gz
android_packages_apps_Trebuchet-6c300c89ecbac04c557a4695b1597ed35150f420.tar.bz2
android_packages_apps_Trebuchet-6c300c89ecbac04c557a4695b1597ed35150f420.zip
resolve merge conflicts of 128b7e59a to ub-launcher3-master
Test: I solemnly swear I tested this conflict resolution. Change-Id: I927373593dfb1b67b504a76b1ad013357b363a6e
Diffstat (limited to 'src/com/android/launcher3/compat')
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompat.java13
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java26
-rw-r--r--src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java53
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompat.java4
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVL.java15
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVO.java19
6 files changed, 114 insertions, 16 deletions
diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java
index 257d0ad83..3efbbfba5 100644
--- a/src/com/android/launcher3/compat/AppWidgetManagerCompat.java
+++ b/src/com/android/launcher3/compat/AppWidgetManagerCompat.java
@@ -24,9 +24,13 @@ import android.content.ComponentName;
import android.content.Context;
import android.os.Bundle;
import android.os.UserHandle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.Utilities;
import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.util.PackageUserKey;
import java.util.HashMap;
import java.util.List;
@@ -39,7 +43,11 @@ public abstract class AppWidgetManagerCompat {
public static AppWidgetManagerCompat getInstance(Context context) {
synchronized (sInstanceLock) {
if (sInstance == null) {
- sInstance = new AppWidgetManagerCompatVL(context.getApplicationContext());
+ if (Utilities.isAtLeastO()) {
+ sInstance = new AppWidgetManagerCompatVO(context.getApplicationContext());
+ } else {
+ sInstance = new AppWidgetManagerCompatVL(context.getApplicationContext());
+ }
}
return sInstance;
}
@@ -62,7 +70,8 @@ public abstract class AppWidgetManagerCompat {
return info == null ? null : LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info);
}
- public abstract List<AppWidgetProviderInfo> getAllProviders();
+ public abstract List<AppWidgetProviderInfo> getAllProviders(
+ @Nullable PackageUserKey packageUser);
public abstract boolean bindAppWidgetIdIfAllowed(
int appWidgetId, AppWidgetProviderInfo info, Bundle options);
diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
index 61dd1a5b7..f239f5c31 100644
--- a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
+++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
@@ -22,36 +22,48 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
-import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.support.annotation.Nullable;
import android.widget.Toast;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
import com.android.launcher3.R;
import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.util.PackageUserKey;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
class AppWidgetManagerCompatVL extends AppWidgetManagerCompat {
private final UserManager mUserManager;
- private final PackageManager mPm;
AppWidgetManagerCompatVL(Context context) {
super(context);
- mPm = context.getPackageManager();
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
}
@Override
- public List<AppWidgetProviderInfo> getAllProviders() {
- ArrayList<AppWidgetProviderInfo> providers = new ArrayList<AppWidgetProviderInfo>();
- for (UserHandle user : mUserManager.getUserProfiles()) {
- providers.addAll(mAppWidgetManager.getInstalledProvidersForProfile(user));
+ public List<AppWidgetProviderInfo> getAllProviders(@Nullable PackageUserKey packageUser) {
+ if (packageUser == null) {
+ ArrayList<AppWidgetProviderInfo> providers = new ArrayList<AppWidgetProviderInfo>();
+ for (UserHandle user : mUserManager.getUserProfiles()) {
+ providers.addAll(mAppWidgetManager.getInstalledProvidersForProfile(user));
+ }
+ return providers;
+ }
+ // Only get providers for the given package/user.
+ List<AppWidgetProviderInfo> providers = new ArrayList<>(mAppWidgetManager
+ .getInstalledProvidersForProfile(packageUser.mUser));
+ Iterator<AppWidgetProviderInfo> iterator = providers.iterator();
+ while (iterator.hasNext()) {
+ if (!iterator.next().provider.getPackageName().equals(packageUser.mPackageName)) {
+ iterator.remove();
+ }
}
return providers;
}
diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java
new file mode 100644
index 000000000..bde8b7801
--- /dev/null
+++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVO.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 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.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProviderInfo;
+import android.content.Context;
+import android.os.UserHandle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.util.Log;
+
+import com.android.launcher3.util.PackageUserKey;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+class AppWidgetManagerCompatVO extends AppWidgetManagerCompatVL {
+
+ AppWidgetManagerCompatVO(Context context) {
+ super(context);
+ }
+
+ @Override
+ public List<AppWidgetProviderInfo> getAllProviders(@Nullable PackageUserKey packageUser) {
+ if (packageUser == null) {
+ return super.getAllProviders(null);
+ }
+ // TODO: don't use reflection once API and sdk are ready.
+ try {
+ return (List<AppWidgetProviderInfo>) AppWidgetManager.class.getMethod(
+ "getInstalledProvidersForPackage", String.class, UserHandle.class)
+ .invoke(mAppWidgetManager, packageUser.mPackageName, packageUser.mUser);
+ } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
+ Log.e("AppWidgetManagerCompat", "Failed to call new API", e);
+ }
+ return super.getAllProviders(packageUser);
+ }
+}
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java
index b03a302ee..01d0e1784 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompat.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java
@@ -33,6 +33,7 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.graphics.LauncherIcons;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
import com.android.launcher3.util.LooperExecutor;
+import com.android.launcher3.util.PackageUserKey;
import java.util.List;
@@ -83,7 +84,8 @@ public abstract class LauncherAppsCompat {
public abstract boolean isPackageEnabledForProfile(String packageName, UserHandle user);
public abstract boolean isActivityEnabledForProfile(ComponentName component,
UserHandle user);
- public abstract List<ShortcutConfigActivityInfo> getCustomShortcutActivityList();
+ public abstract List<ShortcutConfigActivityInfo> getCustomShortcutActivityList(
+ @Nullable PackageUserKey packageUser);
/**
* request.accept() will initiate the following flow:
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
index 459017392..58683db75 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
@@ -29,9 +29,11 @@ import android.graphics.Rect;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
+import android.support.annotation.Nullable;
import com.android.launcher3.compat.ShortcutConfigActivityInfo.ShortcutConfigActivityInfoVL;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
+import com.android.launcher3.util.PackageUserKey;
import java.util.ArrayList;
import java.util.HashMap;
@@ -175,12 +177,19 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat {
}
@Override
- public List<ShortcutConfigActivityInfo> getCustomShortcutActivityList() {
- PackageManager pm = mContext.getPackageManager();
+ public List<ShortcutConfigActivityInfo> getCustomShortcutActivityList(
+ @Nullable PackageUserKey packageUser) {
List<ShortcutConfigActivityInfo> result = new ArrayList<>();
+ if (packageUser != null && !packageUser.mUser.equals(Process.myUserHandle())) {
+ return result;
+ }
+ PackageManager pm = mContext.getPackageManager();
for (ResolveInfo info :
pm.queryIntentActivities(new Intent(Intent.ACTION_CREATE_SHORTCUT), 0)) {
- result.add(new ShortcutConfigActivityInfoVL(info.activityInfo, pm));
+ if (packageUser == null || packageUser.mPackageName
+ .equals(info.activityInfo.packageName)) {
+ result.add(new ShortcutConfigActivityInfoVL(info.activityInfo, pm));
+ }
}
return result;
}
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVO.java b/src/com/android/launcher3/compat/LauncherAppsCompatVO.java
index da248cf94..95f2e74f4 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVO.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVO.java
@@ -23,9 +23,11 @@ import android.content.pm.LauncherApps;
import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
+import android.support.annotation.Nullable;
import android.util.Log;
import com.android.launcher3.compat.ShortcutConfigActivityInfo.ShortcutConfigActivityInfoVO;
+import com.android.launcher3.util.PackageUserKey;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -45,17 +47,28 @@ public class LauncherAppsCompatVO extends LauncherAppsCompatVL {
}
@Override
- public List<ShortcutConfigActivityInfo> getCustomShortcutActivityList() {
+ public List<ShortcutConfigActivityInfo> getCustomShortcutActivityList(
+ @Nullable PackageUserKey packageUser) {
List<ShortcutConfigActivityInfo> result = new ArrayList<>();
UserHandle myUser = Process.myUserHandle();
try {
Method m = LauncherApps.class.getDeclaredMethod("getShortcutConfigActivityList",
String.class, UserHandle.class);
- for (UserHandle user : UserManagerCompat.getInstance(mContext).getUserProfiles()) {
+ final List<UserHandle> users;
+ final String packageName;
+ if (packageUser == null) {
+ users = UserManagerCompat.getInstance(mContext).getUserProfiles();
+ packageName = null;
+ } else {
+ users = new ArrayList<>(1);
+ users.add(packageUser.mUser);
+ packageName = packageUser.mPackageName;
+ }
+ for (UserHandle user : users) {
boolean ignoreTargetSdk = myUser.equals(user);
List<LauncherActivityInfo> activities =
- (List<LauncherActivityInfo>) m.invoke(mLauncherApps, null, user);
+ (List<LauncherActivityInfo>) m.invoke(mLauncherApps, packageName, user);
for (LauncherActivityInfo activityInfo : activities) {
if (ignoreTargetSdk || activityInfo.getApplicationInfo().targetSdkVersion >=
Build.VERSION_CODES.O) {