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
This commit is contained in:
Amith Yamasani
2016-11-01 15:49:21 -07:00
parent 7aad8a97a4
commit 21556cdba1
10 changed files with 23 additions and 22 deletions

View File

@@ -1166,7 +1166,7 @@ public final class Utils extends com.android.settingslib.Utils {
final ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo( final ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(
packageName, packageName,
PackageManager.MATCH_DISABLED_COMPONENTS PackageManager.MATCH_DISABLED_COMPONENTS
| PackageManager.MATCH_UNINSTALLED_PACKAGES); | PackageManager.MATCH_ANY_USER);
return appInfo.loadLabel(context.getPackageManager()); return appInfo.loadLabel(context.getPackageManager());
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Unable to find info for package: " + packageName); Log.w(TAG, "Unable to find info for package: " + packageName);

View File

@@ -41,7 +41,7 @@ public abstract class AppCounter extends AsyncTask<Void, Void, Integer> {
final List<ApplicationInfo> list = final List<ApplicationInfo> list =
mPm.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS mPm.getInstalledApplicationsAsUser(PackageManager.GET_DISABLED_COMPONENTS
| PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS
| (user.isAdmin() ? PackageManager.GET_UNINSTALLED_PACKAGES : 0), | (user.isAdmin() ? PackageManager.MATCH_ANY_USER : 0),
user.id); user.id);
for (ApplicationInfo info : list) { for (ApplicationInfo info : list) {
if (includeInCount(info)) { if (includeInCount(info)) {

View File

@@ -141,8 +141,8 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
// Get application info again to refresh changed properties of application // Get application info again to refresh changed properties of application
try { try {
mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName, mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName,
PackageManager.GET_DISABLED_COMPONENTS | PackageManager.MATCH_DISABLED_COMPONENTS |
PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.MATCH_ANY_USER |
PackageManager.GET_SIGNATURES | PackageManager.GET_SIGNATURES |
PackageManager.GET_PERMISSIONS); PackageManager.GET_PERMISSIONS);
} catch (NameNotFoundException e) { } catch (NameNotFoundException e) {

View File

@@ -80,8 +80,8 @@ public class AppOpsDetails extends InstrumentedFragment {
} }
try { try {
mPackageInfo = mPm.getPackageInfo(packageName, mPackageInfo = mPm.getPackageInfo(packageName,
PackageManager.GET_DISABLED_COMPONENTS | PackageManager.MATCH_DISABLED_COMPONENTS |
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
} catch (NameNotFoundException e) { } catch (NameNotFoundException e) {
Log.e(TAG, "Exception when retrieving package:" + packageName, e); Log.e(TAG, "Exception when retrieving package:" + packageName, e);
mPackageInfo = null; mPackageInfo = null;

View File

@@ -509,8 +509,8 @@ public class AppOpsState {
if (appInfo == null) { if (appInfo == null) {
try { try {
appInfo = mPm.getApplicationInfo(packageName, appInfo = mPm.getApplicationInfo(packageName,
PackageManager.GET_DISABLED_COMPONENTS PackageManager.MATCH_DISABLED_COMPONENTS
| PackageManager.GET_UNINSTALLED_PACKAGES); | PackageManager.MATCH_ANY_USER);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Unable to find info for package " + packageName); Log.w(TAG, "Unable to find info for package " + packageName);
return null; return null;

View File

@@ -635,8 +635,9 @@ public class InstalledAppDetails extends AppInfoBase
// to go away. // to go away.
try { try {
ApplicationInfo ainfo = context.getPackageManager().getApplicationInfo( ApplicationInfo ainfo = context.getPackageManager().getApplicationInfo(
mAppEntry.info.packageName, PackageManager.GET_UNINSTALLED_PACKAGES mAppEntry.info.packageName,
| PackageManager.GET_DISABLED_COMPONENTS); PackageManager.MATCH_DISABLED_COMPONENTS
| PackageManager.MATCH_ANY_USER);
if (!mShowUninstalled) { if (!mShowUninstalled) {
// If we did not start out with the app uninstalled, then // If we did not start out with the app uninstalled, then
// it transitioning to the uninstalled state for the current // it transitioning to the uninstalled state for the current

View File

@@ -116,15 +116,15 @@ public class ProcStatsPackageEntry implements Parcelable {
try { try {
if ("os".equals(mPackage)) { if ("os".equals(mPackage)) {
mUiTargetApp = pm.getApplicationInfo("android", mUiTargetApp = pm.getApplicationInfo("android",
PackageManager.GET_DISABLED_COMPONENTS | PackageManager.MATCH_DISABLED_COMPONENTS |
PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS |
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
mUiLabel = context.getString(R.string.process_stats_os_label); mUiLabel = context.getString(R.string.process_stats_os_label);
} else { } else {
mUiTargetApp = pm.getApplicationInfo(mPackage, mUiTargetApp = pm.getApplicationInfo(mPackage,
PackageManager.GET_DISABLED_COMPONENTS | PackageManager.MATCH_DISABLED_COMPONENTS |
PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS |
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
mUiLabel = mUiTargetApp.loadLabel(pm).toString(); mUiLabel = mUiTargetApp.loadLabel(pm).toString();
} }
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {

View File

@@ -420,7 +420,7 @@ public class RunningState {
try { try {
ApplicationInfo ai = pm.getApplicationInfo(mProcessName, ApplicationInfo ai = pm.getApplicationInfo(mProcessName,
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
if (ai.uid == mUid) { if (ai.uid == mUid) {
mDisplayLabel = ai.loadLabel(pm); mDisplayLabel = ai.loadLabel(pm);
mLabel = mDisplayLabel.toString(); mLabel = mDisplayLabel.toString();
@@ -438,7 +438,7 @@ public class RunningState {
if (pkgs.length == 1) { if (pkgs.length == 1) {
try { try {
ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], ApplicationInfo ai = pm.getApplicationInfo(pkgs[0],
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
mDisplayLabel = ai.loadLabel(pm); mDisplayLabel = ai.loadLabel(pm);
mLabel = mDisplayLabel.toString(); mLabel = mDisplayLabel.toString();
mPackageInfo = ai; mPackageInfo = ai;
@@ -480,7 +480,7 @@ public class RunningState {
// Finally... whatever, just pick the first package's name. // Finally... whatever, just pick the first package's name.
try { try {
ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], ApplicationInfo ai = pm.getApplicationInfo(pkgs[0],
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
mDisplayLabel = ai.loadLabel(pm); mDisplayLabel = ai.loadLabel(pm);
mLabel = mDisplayLabel.toString(); mLabel = mDisplayLabel.toString();
mPackageInfo = ai; mPackageInfo = ai;
@@ -500,7 +500,7 @@ public class RunningState {
si.mRunningService = service; si.mRunningService = service;
try { try {
si.mServiceInfo = ActivityThread.getPackageManager().getServiceInfo( si.mServiceInfo = ActivityThread.getPackageManager().getServiceInfo(
service.service, PackageManager.GET_UNINSTALLED_PACKAGES, service.service, PackageManager.MATCH_UNINSTALLED_PACKAGES,
UserHandle.getUserId(service.uid)); UserHandle.getUserId(service.uid));
if (si.mServiceInfo == null) { if (si.mServiceInfo == null) {

View File

@@ -502,7 +502,7 @@ public class NotificationStation extends SettingsPreferenceFragment {
private CharSequence loadPackageName(String pkg) { private CharSequence loadPackageName(String pkg) {
try { try {
ApplicationInfo info = mPm.getApplicationInfo(pkg, ApplicationInfo info = mPm.getApplicationInfo(pkg,
PackageManager.GET_UNINSTALLED_PACKAGES); PackageManager.MATCH_ANY_USER);
if (info != null) return mPm.getApplicationLabel(info); if (info != null) return mPm.getApplicationLabel(info);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Cannot load package name", e); Log.e(TAG, "Cannot load package name", e);

View File

@@ -371,7 +371,7 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
PackageInfo pi = null; PackageInfo pi = null;
try { try {
pi = ipm.getPackageInfo(packageName, pi = ipm.getPackageInfo(packageName,
PackageManager.MATCH_UNINSTALLED_PACKAGES PackageManager.MATCH_ANY_USER
| PackageManager.GET_SIGNATURES, userId); | PackageManager.GET_SIGNATURES, userId);
} catch (RemoteException e) { } catch (RemoteException e) {
// Ignore // Ignore