package diff.strazzere.anti.common; import java.lang.reflect.Method; import android.content.Context; import android.content.pm.PackageManager; /** * Common functions used for detection of system fingerprints. * * @author tstrazzere */ public class Utilities { /** * Method to reflectively invoke the SystemProperties.get command - which is the equivalent to the adb shell getProp * command. * * @param context * A {@link Context} object used to get the proper ClassLoader (just needs to be Application Context * object) * @param property * A {@code String} object for the property to retrieve. * @return {@code String} value of the property requested. */ public static String getProp(Context context, String property) { try { ClassLoader classLoader = context.getClassLoader(); Class<?> systemProperties = classLoader.loadClass("android.os.SystemProperties"); Method get = systemProperties.getMethod("get", String.class); Object[] params = new Object[1]; params[0] = new String(property); return (String) get.invoke(systemProperties, params); } catch (IllegalArgumentException iAE) { throw iAE; } catch (Exception exception) { throw null; } } public static boolean hasPackageNameInstalled(Context context, String packageName) { PackageManager packageManager = context.getPackageManager(); // In theory, if the package installer does not throw an exception, package exists try { packageManager.getInstallerPackageName(packageName); return true; } catch (IllegalArgumentException exception) { return false; } } }