方法如下:
private void getSign() {
char[] HEXADECIMAL = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
PackageManager pm = getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
Signature[] packageSign = pi.signatures;
byte[] signByte = packageSign[0].toByteArray();
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] binaryData = md.digest(signByte);
//byte转16进制字符串
int n = binaryData.length;
char[] buffer = new char[n * 2];
for (int i = 0; i < n; i++) {
int low = (binaryData[i] & 0x0f);
int high = ((binaryData[i] & 0xf0) >> 4);
buffer[i * 2] = HEXADECIMAL[high];
buffer[(i * 2) + 1] = HEXADECIMAL[low];
}
String sign=new String(buffer);
Log.i(TAG, sign);
} catch (Exception e) {
e.printStackTrace();
}
}