import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
public String getAppSignature(Context context) {
String result = null;
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
byte[] signatureBytes = signature.toByteArray();
/*
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory cf = CertificateFactory.getInstance("X509");
X509Certificate c = (X509Certificate) cf.generateCertificate(input);
MessageDigest md = MessageDigest.getInstance("MD5");
result = bytesToHex(md.digest(c.getPublicKey().getEncoded()));
*/
MessageDigest md = MessageDigest.getInstance("SHA1", "BC");
md.update(signature.toByteArray());
result = bytesToHex(md.digest());
// OR
// result = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (Exception e) {
}
return result;
}
private static String bytesToHex(byte[] bytes) {
final char[] hexArray = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
char[] hexChars = new char[bytes.length * 2];
int v;
for (int j = 0; j < bytes.length; j++) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
// FOR GOOGLE PLAYSTORE -> "com.android.vending"
public String getInstaller(final Context context){
return context.getPackageManager().getInstallerPackageName(context.getPackageName());
}
// get Syteme property
private static String getSystemProperty(String name)throws Exception {
Class systemPropertyClazz = Class.forName("android.os.SystemProperties");
return (String) systemPropertyClazz.getMethod("get", new Class[] { String.class }).invoke(systemPropertyClazz, new Object[] { name });
}
// Knows values for Emulator
public static boolean checkEmulator()throws Exception {
return getSystemProperty("ro.hardware").contains("goldfish")||
getSystemProperty("ro.kernel.qemu").length() > 0 ||
getSystemProperty("ro.product.model").equals("sdk");
}
Last active
August 30, 2017 13:26
-
-
Save diyfr/4ce3e08e5463e852b1350ec93e719b50 to your computer and use it in GitHub Desktop.
Check your app
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment