我希望检查两个应用程序是否具有相同的签名。我在这里看到了类似的问题:
Can I check if two android apps are signed with the same key?
我能够得到所描述的程序但是在评论中写了#34;这不能保证工作" 。关于什么参数 签名变得独特。我可以使用签名的哈希码来比较签名。请帮忙!
答案 0 :(得分:3)
检查2个应用的最简单方法:
int i = mContext.getPackageManager().checkSignatures(pkg1, pkg2);
boolean matching = i == PackageManager.SIGNATURE_MATCH;
答案 1 :(得分:0)
apk可以有多个签名。比较签名的正确方法是使用hashCode()方法。
您可以使用以下代码段创建两个包的签名的HashSet(根据您的需要进行修改,但尚未测试)
HashSet<String> signatureSet = new HashSet<String>();
Signature[] signatures = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature signature : signatures)
{
signatureSet.add(signature.hashCode());
}
现在,您可以使用set操作来检查签名的相似程度。 例如,检查app1是否具有app2的所有签名(这应该足以满足大部分时间)。
signatureSet1.containsAll(signatureSet2);