Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +9 −2 Original line number Diff line number Diff line Loading @@ -2328,7 +2328,9 @@ public class SettingsProvider extends ContentProvider { // Get all uids for the user's packages. final List<PackageInfo> packages; try { packages = mPackageManager.getInstalledPackages(0, user.id).getList(); packages = mPackageManager.getInstalledPackages( PackageManager.MATCH_UNINSTALLED_PACKAGES, user.id).getList(); } catch (RemoteException e) { throw new IllegalStateException("Package manager not available"); } Loading Loading @@ -3401,7 +3403,9 @@ public class SettingsProvider extends ContentProvider { // Fill each uid with the legacy ssaid to be backwards compatible. final List<PackageInfo> packages; try { packages = mPackageManager.getInstalledPackages(0, userId).getList(); packages = mPackageManager.getInstalledPackages( PackageManager.MATCH_UNINSTALLED_PACKAGES, userId).getList(); } catch (RemoteException e) { throw new IllegalStateException("Package manager not available"); } Loading @@ -3416,6 +3420,9 @@ public class SettingsProvider extends ContentProvider { // Android Id doesn't exist for this package so create it. ssaidSettings.insertSettingLocked(uid, legacySsaid, null, true, info.packageName); if (DEBUG) { Slog.d(LOG_TAG, "Keep the legacy ssaid for uid=" + uid); } } } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +44 −22 Original line number Diff line number Diff line Loading @@ -3840,10 +3840,6 @@ Slog.e("TODD", if (ps == null) { return null; } PackageParser.Package p = ps.pkg; if (p == null) { return null; } final int callingUid = Binder.getCallingUid(); // Filter out ephemeral app metadata: // * The system/shell/root can see metadata for any app Loading @@ -3855,6 +3851,14 @@ Slog.e("TODD", return null; } if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { flags |= MATCH_ANY_USER; } final PackageUserState state = ps.readUserState(userId); PackageParser.Package p = ps.pkg; if (p != null) { final PermissionsState permissionsState = ps.getPermissionsState(); // Compute GIDs only if requested Loading @@ -3863,12 +3867,6 @@ Slog.e("TODD", // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { flags |= MATCH_ANY_USER; } PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags, ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId); Loading @@ -3881,6 +3879,30 @@ Slog.e("TODD", resolveExternalPackageNameLPr(p); return packageInfo; } else if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && state.isAvailable(flags)) { PackageInfo pi = new PackageInfo(); pi.packageName = ps.name; pi.setLongVersionCode(ps.versionCode); pi.sharedUserId = (ps.sharedUser != null) ? ps.sharedUser.name : null; pi.firstInstallTime = ps.firstInstallTime; pi.lastUpdateTime = ps.lastUpdateTime; ApplicationInfo ai = new ApplicationInfo(); ai.packageName = ps.name; ai.uid = UserHandle.getUid(userId, ps.appId); ai.primaryCpuAbi = ps.primaryCpuAbiString; ai.secondaryCpuAbi = ps.secondaryCpuAbiString; ai.versionCode = ps.versionCode; ai.flags = ps.pkgFlags; ai.privateFlags = ps.pkgPrivateFlags; pi.applicationInfo = PackageParser.generateApplicationInfo(ai, flags, state, userId); if (DEBUG_PACKAGE_INFO) Log.v(TAG, "ps.pkg is n/a for [" + ps.name + "]. Provides a minimum info."); return pi; } else { return null; } } @Override Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +9 −2 Original line number Diff line number Diff line Loading @@ -2328,7 +2328,9 @@ public class SettingsProvider extends ContentProvider { // Get all uids for the user's packages. final List<PackageInfo> packages; try { packages = mPackageManager.getInstalledPackages(0, user.id).getList(); packages = mPackageManager.getInstalledPackages( PackageManager.MATCH_UNINSTALLED_PACKAGES, user.id).getList(); } catch (RemoteException e) { throw new IllegalStateException("Package manager not available"); } Loading Loading @@ -3401,7 +3403,9 @@ public class SettingsProvider extends ContentProvider { // Fill each uid with the legacy ssaid to be backwards compatible. final List<PackageInfo> packages; try { packages = mPackageManager.getInstalledPackages(0, userId).getList(); packages = mPackageManager.getInstalledPackages( PackageManager.MATCH_UNINSTALLED_PACKAGES, userId).getList(); } catch (RemoteException e) { throw new IllegalStateException("Package manager not available"); } Loading @@ -3416,6 +3420,9 @@ public class SettingsProvider extends ContentProvider { // Android Id doesn't exist for this package so create it. ssaidSettings.insertSettingLocked(uid, legacySsaid, null, true, info.packageName); if (DEBUG) { Slog.d(LOG_TAG, "Keep the legacy ssaid for uid=" + uid); } } } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +44 −22 Original line number Diff line number Diff line Loading @@ -3840,10 +3840,6 @@ Slog.e("TODD", if (ps == null) { return null; } PackageParser.Package p = ps.pkg; if (p == null) { return null; } final int callingUid = Binder.getCallingUid(); // Filter out ephemeral app metadata: // * The system/shell/root can see metadata for any app Loading @@ -3855,6 +3851,14 @@ Slog.e("TODD", return null; } if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { flags |= MATCH_ANY_USER; } final PackageUserState state = ps.readUserState(userId); PackageParser.Package p = ps.pkg; if (p != null) { final PermissionsState permissionsState = ps.getPermissionsState(); // Compute GIDs only if requested Loading @@ -3863,12 +3867,6 @@ Slog.e("TODD", // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { flags |= MATCH_ANY_USER; } PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags, ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId); Loading @@ -3881,6 +3879,30 @@ Slog.e("TODD", resolveExternalPackageNameLPr(p); return packageInfo; } else if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && state.isAvailable(flags)) { PackageInfo pi = new PackageInfo(); pi.packageName = ps.name; pi.setLongVersionCode(ps.versionCode); pi.sharedUserId = (ps.sharedUser != null) ? ps.sharedUser.name : null; pi.firstInstallTime = ps.firstInstallTime; pi.lastUpdateTime = ps.lastUpdateTime; ApplicationInfo ai = new ApplicationInfo(); ai.packageName = ps.name; ai.uid = UserHandle.getUid(userId, ps.appId); ai.primaryCpuAbi = ps.primaryCpuAbiString; ai.secondaryCpuAbi = ps.secondaryCpuAbiString; ai.versionCode = ps.versionCode; ai.flags = ps.pkgFlags; ai.privateFlags = ps.pkgPrivateFlags; pi.applicationInfo = PackageParser.generateApplicationInfo(ai, flags, state, userId); if (DEBUG_PACKAGE_INFO) Log.v(TAG, "ps.pkg is n/a for [" + ps.name + "]. Provides a minimum info."); return pi; } else { return null; } } @Override