From 21556cdba176e8c544ecf24522d4939dcf0dcc2c Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 1 Nov 2016 15:49:21 -0700 Subject: [PATCH] Adapt to behavior change in MATCH_UNINSTALLED_PACKAGES Don't use the PM flag to reach across users. If retrieving labels, etc., use MATCH_ANY_USER, since several Settings screens show work profile apps as well. Bug: 31000380 Test: Manual test of affected screens Change-Id: Ib6f981ae8443f640276d395c37247c8c0b610894 --- src/com/android/settings/Utils.java | 2 +- .../android/settings/applications/AppCounter.java | 2 +- .../android/settings/applications/AppInfoBase.java | 4 ++-- .../android/settings/applications/AppOpsDetails.java | 4 ++-- .../android/settings/applications/AppOpsState.java | 4 ++-- .../settings/applications/InstalledAppDetails.java | 5 +++-- .../settings/applications/ProcStatsPackageEntry.java | 12 ++++++------ .../android/settings/applications/RunningState.java | 8 ++++---- .../settings/notification/NotificationStation.java | 2 +- .../settings/users/AppRestrictionsFragment.java | 2 +- 10 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 80dcd74bad6..1dbd471bd62 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -1166,7 +1166,7 @@ public final class Utils extends com.android.settingslib.Utils { final ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo( packageName, PackageManager.MATCH_DISABLED_COMPONENTS - | PackageManager.MATCH_UNINSTALLED_PACKAGES); + | PackageManager.MATCH_ANY_USER); return appInfo.loadLabel(context.getPackageManager()); } catch (PackageManager.NameNotFoundException e) { Log.w(TAG, "Unable to find info for package: " + packageName); diff --git a/src/com/android/settings/applications/AppCounter.java b/src/com/android/settings/applications/AppCounter.java index 64b1987b297..946453192ae 100644 --- a/src/com/android/settings/applications/AppCounter.java +++ b/src/com/android/settings/applications/AppCounter.java @@ -41,7 +41,7 @@ public abstract class AppCounter extends AsyncTask { final List list = mPm.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS - | (user.isAdmin() ? PackageManager.GET_UNINSTALLED_PACKAGES : 0), + | (user.isAdmin() ? PackageManager.MATCH_ANY_USER : 0), user.id); for (ApplicationInfo info : list) { if (includeInCount(info)) { diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java index 8ab730ae640..015347dc058 100644 --- a/src/com/android/settings/applications/AppInfoBase.java +++ b/src/com/android/settings/applications/AppInfoBase.java @@ -141,8 +141,8 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment // Get application info again to refresh changed properties of application try { mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName, - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_UNINSTALLED_PACKAGES | + PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_ANY_USER | PackageManager.GET_SIGNATURES | PackageManager.GET_PERMISSIONS); } catch (NameNotFoundException e) { diff --git a/src/com/android/settings/applications/AppOpsDetails.java b/src/com/android/settings/applications/AppOpsDetails.java index 697ffd84434..ba60302bf79 100644 --- a/src/com/android/settings/applications/AppOpsDetails.java +++ b/src/com/android/settings/applications/AppOpsDetails.java @@ -80,8 +80,8 @@ public class AppOpsDetails extends InstrumentedFragment { } try { mPackageInfo = mPm.getPackageInfo(packageName, - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_ANY_USER); } catch (NameNotFoundException e) { Log.e(TAG, "Exception when retrieving package:" + packageName, e); mPackageInfo = null; diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java index 0f960aa3906..2a5c49ad8d1 100644 --- a/src/com/android/settings/applications/AppOpsState.java +++ b/src/com/android/settings/applications/AppOpsState.java @@ -509,8 +509,8 @@ public class AppOpsState { if (appInfo == null) { try { appInfo = mPm.getApplicationInfo(packageName, - PackageManager.GET_DISABLED_COMPONENTS - | PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_DISABLED_COMPONENTS + | PackageManager.MATCH_ANY_USER); } catch (PackageManager.NameNotFoundException e) { Log.w(TAG, "Unable to find info for package " + packageName); return null; diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index add4301b9c3..2569eacae5f 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -635,8 +635,9 @@ public class InstalledAppDetails extends AppInfoBase // to go away. try { ApplicationInfo ainfo = context.getPackageManager().getApplicationInfo( - mAppEntry.info.packageName, PackageManager.GET_UNINSTALLED_PACKAGES - | PackageManager.GET_DISABLED_COMPONENTS); + mAppEntry.info.packageName, + PackageManager.MATCH_DISABLED_COMPONENTS + | PackageManager.MATCH_ANY_USER); if (!mShowUninstalled) { // If we did not start out with the app uninstalled, then // it transitioning to the uninstalled state for the current diff --git a/src/com/android/settings/applications/ProcStatsPackageEntry.java b/src/com/android/settings/applications/ProcStatsPackageEntry.java index dcf87fc6bad..39a0042cb92 100644 --- a/src/com/android/settings/applications/ProcStatsPackageEntry.java +++ b/src/com/android/settings/applications/ProcStatsPackageEntry.java @@ -116,15 +116,15 @@ public class ProcStatsPackageEntry implements Parcelable { try { if ("os".equals(mPackage)) { mUiTargetApp = pm.getApplicationInfo("android", - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS | + PackageManager.MATCH_ANY_USER); mUiLabel = context.getString(R.string.process_stats_os_label); } else { mUiTargetApp = pm.getApplicationInfo(mPackage, - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS | + PackageManager.MATCH_ANY_USER); mUiLabel = mUiTargetApp.loadLabel(pm).toString(); } } catch (PackageManager.NameNotFoundException e) { diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java index f1c33426833..dd44887ae10 100644 --- a/src/com/android/settings/applications/RunningState.java +++ b/src/com/android/settings/applications/RunningState.java @@ -420,7 +420,7 @@ public class RunningState { try { ApplicationInfo ai = pm.getApplicationInfo(mProcessName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); if (ai.uid == mUid) { mDisplayLabel = ai.loadLabel(pm); mLabel = mDisplayLabel.toString(); @@ -438,7 +438,7 @@ public class RunningState { if (pkgs.length == 1) { try { ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); mDisplayLabel = ai.loadLabel(pm); mLabel = mDisplayLabel.toString(); mPackageInfo = ai; @@ -480,7 +480,7 @@ public class RunningState { // Finally... whatever, just pick the first package's name. try { ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); mDisplayLabel = ai.loadLabel(pm); mLabel = mDisplayLabel.toString(); mPackageInfo = ai; @@ -500,7 +500,7 @@ public class RunningState { si.mRunningService = service; try { si.mServiceInfo = ActivityThread.getPackageManager().getServiceInfo( - service.service, PackageManager.GET_UNINSTALLED_PACKAGES, + service.service, PackageManager.MATCH_UNINSTALLED_PACKAGES, UserHandle.getUserId(service.uid)); if (si.mServiceInfo == null) { diff --git a/src/com/android/settings/notification/NotificationStation.java b/src/com/android/settings/notification/NotificationStation.java index 59bc0aa165b..04897e464e5 100644 --- a/src/com/android/settings/notification/NotificationStation.java +++ b/src/com/android/settings/notification/NotificationStation.java @@ -502,7 +502,7 @@ public class NotificationStation extends SettingsPreferenceFragment { private CharSequence loadPackageName(String pkg) { try { ApplicationInfo info = mPm.getApplicationInfo(pkg, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); if (info != null) return mPm.getApplicationLabel(info); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Cannot load package name", e); diff --git a/src/com/android/settings/users/AppRestrictionsFragment.java b/src/com/android/settings/users/AppRestrictionsFragment.java index 609ed27732a..d487c70c66f 100644 --- a/src/com/android/settings/users/AppRestrictionsFragment.java +++ b/src/com/android/settings/users/AppRestrictionsFragment.java @@ -371,7 +371,7 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen PackageInfo pi = null; try { pi = ipm.getPackageInfo(packageName, - PackageManager.MATCH_UNINSTALLED_PACKAGES + PackageManager.MATCH_ANY_USER | PackageManager.GET_SIGNATURES, userId); } catch (RemoteException e) { // Ignore