2011-10-17 36 views
0

我正在構建一個需要跟蹤設備上安裝的其他一些應用程序的Android應用程序。計算設備上其他應用程序的哈希值

對於給定的應用程序(軟件包)我需要計算一個散列值,使得:

  • 的值是用於不同版本的相同應用
  • 值的不同是對於相同的版本相同的安裝在不同設備上的相同應用程序

有沒有辦法有效地做到這一點?

謝謝

回答

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

+0

我的應用程序如何加載已安裝的應用程序的apk? – Ares

+0

即使您獲得所需的權限來執行此操作,也可能不滿足第二個要求。 – user999717

+0

您不需要打開應用程序只需加載文件的二進制文件,儘管您可能需要root才能執行此操作。 – slayton

相關問題