在使用java方法为我的应用程序获取hask键之前,我尝试在facebook应用程序中获取kotlin中的散列键:
Java代码:
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"your.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}现在,我尝试将这个代码片段转换为kotlin代码:
Kotlin码:
try {
val info = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT))
}
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
} catch (e: NoSuchAlgorithmException) {
e.printStackTrace()
}但是在这一行代码中出现了错误,我尝试了一些解决方案,但没有得到任何有用的信息:
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT))encodeToString是未解决的,对于Base64.DEFAULT也是一样的。
提前谢谢你的时间。
发布于 2018-03-21 13:38:06
使用下面的代码获取key散列
try {
val info = packageManager.getPackageInfo(
"your package",
PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT))
}
} catch (e: PackageManager.NameNotFoundException) {
} catch (e: NoSuchAlgorithmException) {
}确保这一点。导入正确的包
import android.content.pm.PackageManager
import android.util.Base64
import android.util.Log
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException发布于 2018-03-21 13:39:51
代码中没有任何错误,只需进行一次更改,请添加导入android.util.Base64而不是导入java.util.*
https://stackoverflow.com/questions/49407744
复制相似问题