Loading core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -63,7 +63,9 @@ interface IPackageManager { boolean isPackageAvailable(String packageName, int userId); PackageInfo getPackageInfo(String packageName, int flags, int userId); int getPackageUid(String packageName, int userId); int getPackageUidEtc(String packageName, int flags, int userId); int[] getPackageGids(String packageName, int userId); int[] getPackageGidsEtc(String packageName, int flags, int userId); String[] currentToCanonicalPackageNames(in String[] names); String[] canonicalToCurrentPackageNames(in String[] names); Loading services/core/java/com/android/server/AppOpsService.java +4 −5 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.media.AudioAttributes; import android.os.AsyncTask; import android.os.Binder; Loading Loading @@ -263,12 +262,12 @@ public class AppOpsService extends IAppOpsService.Stub { Iterator<Ops> it = pkgs.values().iterator(); while (it.hasNext()) { Ops ops = it.next(); int curUid; int curUid = -1; try { curUid = mContext.getPackageManager().getPackageUid(ops.packageName, curUid = AppGlobals.getPackageManager().getPackageUidEtc(ops.packageName, PackageManager.GET_UNINSTALLED_PACKAGES, UserHandle.getUserId(ops.uidState.uid)); } catch (NameNotFoundException e) { curUid = -1; } catch (RemoteException ignored) { } if (curUid != ops.uidState.uid) { Slog.i(TAG, "Pruning old package " + ops.packageName Loading services/core/java/com/android/server/pm/PackageManagerService.java +27 −12 Original line number Diff line number Diff line Loading @@ -2736,26 +2736,38 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public int getPackageUid(String packageName, int userId) { return getPackageUidEtc(packageName, 0, userId); } @Override public int getPackageUidEtc(String packageName, int flags, int userId) { if (!sUserManager.exists(userId)) return -1; enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, "get package uid"); // reader synchronized (mPackages) { PackageParser.Package p = mPackages.get(packageName); final PackageParser.Package p = mPackages.get(packageName); if (p != null) { return UserHandle.getUid(userId, p.applicationInfo.uid); } PackageSetting ps = mSettings.mPackages.get(packageName); if((ps == null) || (ps.pkg == null) || (ps.pkg.applicationInfo == null)) { return -1; if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { return UserHandle.getUid(userId, ps.appId); } p = ps.pkg; return p != null ? UserHandle.getUid(userId, p.applicationInfo.uid) : -1; } } return -1; } @Override public int[] getPackageGids(String packageName, int userId) { return getPackageGidsEtc(packageName, 0, userId); } @Override public int[] getPackageGids(String packageName, int userId) throws RemoteException { public int[] getPackageGidsEtc(String packageName, int flags, int userId) { if (!sUserManager.exists(userId)) { return null; } Loading @@ -2765,14 +2777,17 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { PackageParser.Package p = mPackages.get(packageName); if (DEBUG_PACKAGE_INFO) { Log.v(TAG, "getPackageGids" + packageName + ": " + p); } final PackageParser.Package p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return ps.getPermissionsState().computeGids(userId); } if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { return ps.getPermissionsState().computeGids(userId); } } } return null; Loading Loading
core/java/android/content/pm/IPackageManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -63,7 +63,9 @@ interface IPackageManager { boolean isPackageAvailable(String packageName, int userId); PackageInfo getPackageInfo(String packageName, int flags, int userId); int getPackageUid(String packageName, int userId); int getPackageUidEtc(String packageName, int flags, int userId); int[] getPackageGids(String packageName, int userId); int[] getPackageGidsEtc(String packageName, int flags, int userId); String[] currentToCanonicalPackageNames(in String[] names); String[] canonicalToCurrentPackageNames(in String[] names); Loading
services/core/java/com/android/server/AppOpsService.java +4 −5 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.media.AudioAttributes; import android.os.AsyncTask; import android.os.Binder; Loading Loading @@ -263,12 +262,12 @@ public class AppOpsService extends IAppOpsService.Stub { Iterator<Ops> it = pkgs.values().iterator(); while (it.hasNext()) { Ops ops = it.next(); int curUid; int curUid = -1; try { curUid = mContext.getPackageManager().getPackageUid(ops.packageName, curUid = AppGlobals.getPackageManager().getPackageUidEtc(ops.packageName, PackageManager.GET_UNINSTALLED_PACKAGES, UserHandle.getUserId(ops.uidState.uid)); } catch (NameNotFoundException e) { curUid = -1; } catch (RemoteException ignored) { } if (curUid != ops.uidState.uid) { Slog.i(TAG, "Pruning old package " + ops.packageName Loading
services/core/java/com/android/server/pm/PackageManagerService.java +27 −12 Original line number Diff line number Diff line Loading @@ -2736,26 +2736,38 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public int getPackageUid(String packageName, int userId) { return getPackageUidEtc(packageName, 0, userId); } @Override public int getPackageUidEtc(String packageName, int flags, int userId) { if (!sUserManager.exists(userId)) return -1; enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, "get package uid"); // reader synchronized (mPackages) { PackageParser.Package p = mPackages.get(packageName); final PackageParser.Package p = mPackages.get(packageName); if (p != null) { return UserHandle.getUid(userId, p.applicationInfo.uid); } PackageSetting ps = mSettings.mPackages.get(packageName); if((ps == null) || (ps.pkg == null) || (ps.pkg.applicationInfo == null)) { return -1; if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { return UserHandle.getUid(userId, ps.appId); } p = ps.pkg; return p != null ? UserHandle.getUid(userId, p.applicationInfo.uid) : -1; } } return -1; } @Override public int[] getPackageGids(String packageName, int userId) { return getPackageGidsEtc(packageName, 0, userId); } @Override public int[] getPackageGids(String packageName, int userId) throws RemoteException { public int[] getPackageGidsEtc(String packageName, int flags, int userId) { if (!sUserManager.exists(userId)) { return null; } Loading @@ -2765,14 +2777,17 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { PackageParser.Package p = mPackages.get(packageName); if (DEBUG_PACKAGE_INFO) { Log.v(TAG, "getPackageGids" + packageName + ": " + p); } final PackageParser.Package p = mPackages.get(packageName); if (p != null) { PackageSetting ps = (PackageSetting) p.mExtras; return ps.getPermissionsState().computeGids(userId); } if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { return ps.getPermissionsState().computeGids(userId); } } } return null; Loading