java获取手机已安装APK的签名摘要
将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可。
privatestaticfinalchar[]HEX_CHAR={
'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'
};
/**获取签名的MD5摘要*/
publicString[]signatureDigest(){
pkgInfo=mContext.getPackageManager().getPackageInfo(
mContext.getPackageName(),PackageManager.GET_SIGNATURES);
intlength=pkgInfo.signatures.length;
String[]digests=newString[length];
for(inti=0;i<length;++i){
Signaturesign=mPkgInfo.signatures[i];
try{
MessageDigestmd5=MessageDigest.getInstance("MD5");
byte[]digest=md5.digest(sign.toByteArray());//getdigestwithmd5algorithm
digests[i]=toHexString(digest);
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
digests[i]=null;
}
}
returndigests;
}
/**将字节数组转化为对应的十六进制字符串*/
privateStringtoHexString(byte[]rawByteArray){
char[]chars=newchar[rawByteArray.length*2];
for(inti=0;i<rawByteArray.length;++i){
byteb=rawByteArray[i];
chars[i*2]=HEX_CHAR[(b>>>4&0x0F)];
chars[i*2+1]=HEX_CHAR[(b&0x0F)];
}
returnnewString(chars);
}
以上就是本文的全部内容,希望对大家的学习有所帮助。