计算设备上其他应用程序的哈希值

时间:2011-10-17 23:59:53

标签: android hash package md5 sha1

我正在构建一个Android应用程序,需要跟踪设备上安装的其他一些应用程序。

对于给定的应用程序(包),我需要计算哈希值,使得:

  • 同一应用程序的不同版本的值不同
  • 对于安装在不同设备上的同一应用程序的相同版本,该值相同

有没有办法有效地做到这一点?

谢谢

1 个答案:

答案 0 :(得分:0)

只需将apk作为文件加载,并使用以下命令计算文件的MD5哈希值:

public String md5(String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i=0; i<messageDigest.length; i++)
            hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

取自:http://www.androidsnippets.com/create-a-md5-hash-and-dump-as-a-hex-string

<强>更新: 您是否只是想确定是否安装了较新版本的应用程序,为什么不使用PackageManager.getPackageInfo方法?它返回一个PackageInfo对象,其中包含应用程序的版本号。您可以跟踪这些值,当它们发生更改时,表示应用程序已更新。请参阅:http://developer.android.com/reference/android/content/pm/PackageManager.html