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:
@@ -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);
|
||||||
|
@@ -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)) {
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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);
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user