我想检查App A和App B的签名是否相同.
我想在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应用程序可以获取设备上安装的任何其他应用程序的签名列表吗?
最佳答案 是的,您可以获得如下签名
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);
}