在注册资料的时候需要填写hash值,这里记录一下获取hash值的方法。
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.util.Base64;
import android.util.Log;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class AppSignatureHelper {
private static final String TAG = AppSignatureHelper.class.getSimpleName();
//返回 SHA 哈希值
public static String getAppSignatures(Context context) {
String result = "";
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
context.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
messageDigest.update(signature.toByteArray());
result += Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT) + "\n";
}
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
Log.e(TAG, "Failed to get app signatures", e);
}
return result;
}
//返回MD5 哈希值
public static String getAppSignaturesMd5(Context context) {
String result = "";
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
context.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(signature.toByteArray());
result += Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT) + "\n";
}
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
Log.e(TAG, "Failed to get app signatures", e);
}
return result;
}
}