Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3eb331ed authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add support for MATCH_APEX in getPackageInfo."

parents 92d0e012 2e106053
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -3967,6 +3967,7 @@ public class PackageManagerService extends IPackageManager.Stub
                    }
                    return generatePackageInfo(ps, flags, userId);
                }
                // TODO(b/123680735): support MATCH_APEX|MATCH_FACTORY_ONLY case
            }
            PackageParser.Package p = mPackages.get(packageName);
@@ -3996,6 +3997,30 @@ public class PackageManagerService extends IPackageManager.Stub
                }
                return generatePackageInfo(ps, flags, userId);
            }
            //
            if (!matchFactoryOnly && (flags & MATCH_APEX) != 0) {
                //TODO(b/123052859) Don't do file operations every time there is a query.
                final IApexService apex = IApexService.Stub.asInterface(
                        ServiceManager.getService("apexservice"));
                if (apex != null) {
                    try {
                        final ApexInfo activePkg = apex.getActivePackage(packageName);
                        if (activePkg != null) {
                            try {
                                return PackageParser.generatePackageInfoFromApex(
                                        new File(activePkg.packagePath), true /* collect certs */);
                            } catch (PackageParserException pe) {
                                throw new IllegalStateException("Unable to parse: " + activePkg,
                                        pe);
                            }
                        }
                    } catch (RemoteException e) {
                        Log.e(TAG, "Unable to retrieve packages from apexservice: " + e.toString());
                    }
                } else {
                    Log.e(TAG, "Unable to connect to apexservice for querying packages.");
                }
            }
        }
        return null;
    }