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); }
以上就是本文的全部内容,希望对大家的学习有所帮助。