summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorKenny Guy <kennyguy@google.com>2014-07-31 11:39:16 +0100
committerKenny Guy <kennyguy@google.com>2014-08-04 14:38:09 +0100
commitf07af7b77de0319355e228e8630824d924522d78 (patch)
treed613515bfad8f7dc6a5cef1d78ecf4ff970ba1fa /src/com/android
parente755d469d40b95e763a9dcb67d0e4f511d1948dd (diff)
downloadandroid_packages_apps_Trebuchet-f07af7b77de0319355e228e8630824d924522d78.tar.gz
android_packages_apps_Trebuchet-f07af7b77de0319355e228e8630824d924522d78.tar.bz2
android_packages_apps_Trebuchet-f07af7b77de0319355e228e8630824d924522d78.zip
Launch app details for correct profile.
Support showing app details for apps in other profiles. Bug: 16371359 Change-Id: I1cabcd9f74f2a6ea6c4202a7d58af3ff3b458fd2
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/launcher3/InfoDropTarget.java11
-rw-r--r--src/com/android/launcher3/Launcher.java18
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompat.java1
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatV16.java16
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVL.java4
5 files changed, 43 insertions, 7 deletions
diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java
index c8541a92a..7e55af228 100644
--- a/src/com/android/launcher3/InfoDropTarget.java
+++ b/src/com/android/launcher3/InfoDropTarget.java
@@ -26,6 +26,8 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
+import com.android.launcher3.compat.UserHandleCompat;
+
public class InfoDropTarget extends ButtonDropTarget {
private ColorStateList mOriginalTextColor;
@@ -82,8 +84,15 @@ public class InfoDropTarget extends ButtonDropTarget {
} else if (d.dragInfo instanceof PendingAddItemInfo) {
componentName = ((PendingAddItemInfo) d.dragInfo).componentName;
}
+ final UserHandleCompat user;
+ if (d.dragInfo instanceof ItemInfo) {
+ user = ((ItemInfo) d.dragInfo).user;
+ } else {
+ user = UserHandleCompat.myUserHandle();
+ }
+
if (componentName != null) {
- mLauncher.startApplicationDetailsActivity(componentName);
+ mLauncher.startApplicationDetailsActivity(componentName, user);
}
// There is no post-drop animation, so clean up the DragView now
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index b5bed4cdf..0ab665d74 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2726,13 +2726,19 @@ public class Launcher extends Activity
*/
protected void onInteractionBegin() {}
- void startApplicationDetailsActivity(ComponentName componentName) {
+ void startApplicationDetailsActivity(ComponentName componentName, UserHandleCompat user) {
String packageName = componentName.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);
- startActivitySafely(null, intent, "startApplicationDetailsActivity");
+ try {
+ LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(this);
+ UserManagerCompat userManager = UserManagerCompat.getInstance(this);
+ launcherApps.showAppDetailsForProfile(componentName, user);
+ } catch (SecurityException e) {
+ Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+ Log.e(TAG, "Launcher does not have permission to launch settings");
+ } catch (ActivityNotFoundException e) {
+ Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+ Log.e(TAG, "Unable to launch settings");
+ }
}
// returns true if the activity was started
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java
index cc0203d27..0f8444b7a 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompat.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java
@@ -66,6 +66,7 @@ public abstract class LauncherAppsCompat {
UserHandleCompat user);
public abstract void startActivityForProfile(ComponentName component, UserHandleCompat user,
Rect sourceBounds, Bundle opts);
+ public abstract void showAppDetailsForProfile(ComponentName component, UserHandleCompat user);
public abstract void addOnAppsChangedCallback(OnAppsChangedCallbackCompat listener);
public abstract void removeOnAppsChangedCallback(OnAppsChangedCallbackCompat listener);
public abstract boolean isPackageEnabledForProfile(String packageName, UserHandleCompat user);
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java
index de9f3a032..c47f223f3 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatV16.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatV16.java
@@ -27,14 +27,21 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageInfo;
import android.content.pm.ResolveInfo;
import android.graphics.Rect;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
+import android.provider.Settings;
import java.util.ArrayList;
import java.util.Collections;
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;
@@ -81,6 +88,15 @@ public class LauncherAppsCompatV16 extends LauncherAppsCompat {
mContext.startActivity(launchIntent, opts);
}
+ public void showAppDetailsForProfile(ComponentName component, UserHandleCompat 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);
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
index ca9b67146..e7de99cc0 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
@@ -73,6 +73,10 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat {
mLauncherApps.startActivityForProfile(component, user.getUser(), sourceBounds, opts);
}
+ public void showAppDetailsForProfile(ComponentName component, UserHandleCompat user) {
+ mLauncherApps.showAppDetailsForProfile(component, user.getUser(), null, null);
+ }
+
public void addOnAppsChangedCallback(LauncherAppsCompat.OnAppsChangedCallbackCompat callback) {
WrappedCallback wrappedCallback = new WrappedCallback(callback);
synchronized (mCallbacks) {