修复 6.0 以下设备读取 DSA 签名会闪退的问题
This commit is contained in:
@ -263,9 +263,13 @@ public class PackageUtils {
|
||||
if (!TextUtils.isEmpty(v1SignaturePublicKey)) {
|
||||
return v1SignaturePublicKey.equals(installedPublicKey1) || v1SignaturePublicKey.equals(installedPublicKey2);
|
||||
}
|
||||
String v1SignaturePublicKeyFromSystemApi = getV1SignatureFromFileBySystemApi(apkFilePath);
|
||||
if (!TextUtils.isEmpty(v1SignaturePublicKeyFromSystemApi)) {
|
||||
return v1SignaturePublicKeyFromSystemApi.equals(installedPublicKey1);
|
||||
}
|
||||
|
||||
return getV2SignatureFromFile(apkFilePath).equals(installedPublicKey1);
|
||||
} catch (Exception e) {
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
@ -302,6 +306,13 @@ public class PackageUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用系统 API 获取 V1 签名 (最后一招了) (大文件可能会 ANR,但 ANR 一会可用的话比不能用好点!)
|
||||
*/
|
||||
private static String getV1SignatureFromFileBySystemApi(String apkFilePath) {
|
||||
return parseSignature(HaloApp.getInstance().getPackageManager().getPackageArchiveInfo(apkFilePath, PackageManager.GET_SIGNATURES).signatures[0].toByteArray())[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 APK 文件中获取 V2 签名公钥
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user