在运行时为Android检索apk签名

时间:2011-12-30 18:34:26

标签: android

有没有办法在运行时检索有关apk签名的信息?

例如,我使用2个不同的签名签署了相同的App:app-1.apk和app-2.apk,我希望能够在运行时区分这两个apk。那可能吗?

我的目标是使用外部服务器并根据应用程序的版本代码和签名实现许可系统。

2 个答案:

答案 0 :(得分:10)

您可以使用PackageManager访问apk签名。  Package Manager中定义的PackageInfo标志返回有关包中包含的签名的信息。

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES).signatures;    
for (Signature sig : sigs)
{
    Log.i("App", "Signature : " + sig.hashCode());
}

http://developer.android.com/reference/android/content/pm/PackageManager.html

答案 1 :(得分:2)

这可能是一种不同的方法,但为什么不只是实现基于签名的自定义权限?然后,您可以使用包管理器(或广播)来确定是否授予了权限。

如果是,则两个签名都相同,否则它们是不同的。