2014-02-27 17 views
4

我想檢查應用程序A和應用程序B的簽名是否相同。我可以檢查兩個android應用是否使用相同的密鑰簽名?

我想在App A中進行檢查並根據比較結果調用方法。

public boolean compareAppSignatures() { 
    Signature[] sigA = getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_SIGNATURES).signatures; 
    Signature[] sigB = getPackageManager().getPackageInfo("<App B package name>",PackageManager.GET_SIGNATURES).signatures; 
    return Arrays.equals(sigA, sigB); 
} 

這是一個很好的方法嗎?另外,有沒有辦法檢查他們是否用同一個密鑰簽名?一個Android應用程序可以獲取設備上安裝的任何其他應用程序的簽名列表嗎?

回答

0

這不能保證工作。 APK可以使用多個簽名進行簽名。我需要檢查應用程序B是否包含兩個應用程序都信任的簽名證書。

0

我不認爲可以這樣做。

+1

我認爲這應該是一條評論 –

2

是的,你可以得到簽名如下

PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); 
Log.i("test", pi.signatures[0].toCharsString()); 

,並相應喲可以做

Signature[] sigA = getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_SIGNATURES).signatures; 
    Signature[] sigB = getPackageManager().getPackageInfo("<App B package name>",PackageManager.GET_SIGNATURES).signatures; 

比你可以比較如下

public boolean compareAppSignatures() { 
    Signature[] sigA = getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_SIGNATURES).signatures; 
    Signature[] sigB = getPackageManager().getPackageInfo("<App B package name>",PackageManager.GET_SIGNATURES).signatures; 
    return Arrays.equals(sigA, sigB); 
} 
相關問題