Merge "Update mainline module utils function of AppUtils" into rvc-dev

This commit is contained in:
Yanting Yang
2020-06-15 02:59:12 +00:00
committed by Android (Google) Code Review

View File

@@ -22,10 +22,12 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.usb.IUsbManager;
import android.net.Uri;
import android.os.Environment;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -146,10 +148,23 @@ public class AppUtils {
/**
* Returns a boolean indicating whether a given package is a mainline module.
*/
public static boolean isMainlineModule(Context context, String packageName) {
final PackageManager pm = context.getPackageManager();
public static boolean isMainlineModule(PackageManager pm, String packageName) {
// Check if the package is listed among the system modules.
try {
return pm.getModuleInfo(packageName, 0 /* flags */) != null;
pm.getModuleInfo(packageName, 0 /* flags */);
return true;
} catch (PackageManager.NameNotFoundException e) {
//pass
}
try {
final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */);
// Check if the package is contained in an APEX. There is no public API to properly
// check whether a given APK package comes from an APEX registered as module.
// Therefore we conservatively assume that any package scanned from an /apex path is
// a system package.
return pkg.applicationInfo.sourceDir.startsWith(
Environment.getApexDirectory().getAbsolutePath());
} catch (PackageManager.NameNotFoundException e) {
return false;
}