Loading packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java +18 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading
packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java +18 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading