在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

java获取手机已安装APK的签名摘要

2016-8-29 13:09| 发布者: zhangjf| 查看: 618| 评论: 0

摘要: 将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可。 ...

将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可。

  1. private static final char[] HEX_CHAR = {
  2. '0', '1', '2', '3', '4', '5', '6', '7',
  3. '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
  4. };
  5. /** 获取签名的MD5摘要 */
  6. public String[] signatureDigest() {
  7. pkgInfo = mContext.getPackageManager().getPackageInfo(
  8. mContext.getPackageName(), PackageManager.GET_SIGNATURES);
  9. int length = pkgInfo.signatures.length;
  10. String[] digests = new String[length];
  11. for (int i = 0; i < length; ++i) {
  12. Signature sign = mPkgInfo.signatures[i];
  13. try {
  14. MessageDigest md5 = MessageDigest.getInstance("MD5");
  15. byte[] digest = md5.digest(sign.toByteArray()); // get digest with md5 algorithm
  16. digests[i] = toHexString(digest);
  17. } catch (NoSuchAlgorithmException e) {
  18. e.printStackTrace();
  19. digests[i] = null;
  20. }
  21. }
  22. return digests;
  23. }
  24. /** 将字节数组转化为对应的十六进制字符串 */
  25. private String toHexString(byte[] rawByteArray) {
  26. char[] chars = new char[rawByteArray.length * 2];
  27. for (int i = 0; i < rawByteArray.length; ++i) {
  28. byte b = rawByteArray[i];
  29. chars[i*2] = HEX_CHAR[(b >>> 4 & 0x0F)];
  30. chars[i*2+1] = HEX_CHAR[(b & 0x0F)];
  31. }
  32. return new String(chars);
  33. }
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助。

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-5-6 16:15

Copyright 2015-2025 djqfx

返回顶部