[英]'signatures: Array<(out) Signature!>!' is deprecated. Deprecated in Java
I got this printHashKey
function and it works well.我得到了这个printHashKey
function 并且效果很好。
fun printHashKey() {
try {
val info : PackageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md: MessageDigest = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.encode(md.digest(), 0))
Log.i("TAG", "printHashKey() Hash Key: $hashKey")
}
} catch (e: NoSuchAlgorithmException) {
Log.e("TAG", "printHashKey()", e)
} catch (e: Exception) {
Log.e("TAG", "printHashKey()", e)
}
}
but there's a warning sign:但有一个警告标志:
GET_SIGNATURES: Int
is deprecated. GET_SIGNATURES: Int
。 Deprecated in Java.在 Java 中已弃用。signatures: Array<(out) Signature!>!
is deprecated.已弃用。 Deprecated
in Java.在 Java 中Deprecated
。 So I changed GET_SIGNATURES
to GET_SIGNING_CERTIFICATES
所以我将GET_SIGNATURES
更改为GET_SIGNING_CERTIFICATES
fun printHashKey() {
try {
val info : PackageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES)
for (signature in info.signatures) {
val md: MessageDigest = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.encode(md.digest(), 0))
Log.i("TAG", "printHashKey() Hash Key: $hashKey")
}
} catch (e: NoSuchAlgorithmException) {
Log.e("TAG", "printHashKey()", e)
} catch (e: Exception) {
Log.e("TAG", "printHashKey()", e)
}
}
And I still got this warning.我仍然收到这个警告。
signatures: Array<(out) Signature!>!
is deprecated.已弃用。 Deprecated
in Java.在 Java 中Deprecated
。 I know I can just ignore this warning, but I want to fix it.我知道我可以忽略这个警告,但我想修复它。 What can I use instead of signatures
?我可以用什么代替signatures
?
From Android P you should use signingInfo
instead从 Android P 你应该使用signingInfo
代替
Full code:完整代码:
val signatures = with(packageManager) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES)
.signingInfo
.apkContentsSigners
} else {
getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
.signatures
}
}
And afters this you also could add this lines above your function to suppress warnings:在此之后,您还可以在 function 上方添加以下行以抑制警告:
@Suppress("DEPRECATION")
@SuppressLint("PackageManagerGetSignatures")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.