Merge "Skip uninstalled package for getPackagesForUid()"
am: f4c8c3590a
Change-Id: I1e4f7913cc00635611440faabcab4faff7f35dc5
This commit is contained in:
@@ -4578,6 +4578,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getPackagesForUid(int uid) {
|
public String[] getPackagesForUid(int uid) {
|
||||||
|
final int userId = UserHandle.getUserId(uid);
|
||||||
uid = UserHandle.getAppId(uid);
|
uid = UserHandle.getAppId(uid);
|
||||||
// reader
|
// reader
|
||||||
synchronized (mPackages) {
|
synchronized (mPackages) {
|
||||||
@@ -4585,9 +4586,16 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
if (obj instanceof SharedUserSetting) {
|
if (obj instanceof SharedUserSetting) {
|
||||||
final SharedUserSetting sus = (SharedUserSetting) obj;
|
final SharedUserSetting sus = (SharedUserSetting) obj;
|
||||||
final int N = sus.packages.size();
|
final int N = sus.packages.size();
|
||||||
final String[] res = new String[N];
|
String[] res = new String[N];
|
||||||
for (int i = 0; i < N; i++) {
|
final Iterator<PackageSetting> it = sus.packages.iterator();
|
||||||
res[i] = sus.packages.valueAt(i).name;
|
int i = 0;
|
||||||
|
while (it.hasNext()) {
|
||||||
|
PackageSetting ps = it.next();
|
||||||
|
if (ps.getInstalled(userId)) {
|
||||||
|
res[i++] = ps.name;
|
||||||
|
} else {
|
||||||
|
res = ArrayUtils.removeElement(String.class, res, res[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
} else if (obj instanceof PackageSetting) {
|
} else if (obj instanceof PackageSetting) {
|
||||||
|
|||||||
Reference in New Issue
Block a user