Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Key hash for Android-Facebook app in Kotlin Programmatically

Tags:

android

kotlin

I'm trying to get the hash key in kotlin for facebook-app before that i use this java method to get hask key for my apps:

Java code:

// 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) {

    }

Now i tried this code snippet by converting it into kotlin code:

Kotlin Code:

    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()
    }

but getting error on this line of code i have tried some solutions but didn't get anything useful:

      Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT))

encodeToString is unresolved and same for Base64.DEFAULT.

Thanks in advance for your time.

like image 201
Nouman Ch Avatar asked Dec 13 '25 10:12

Nouman Ch


2 Answers

Use below code for getting keyhash

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) {

    }

Make sure that. You import correct packages

   import android.content.pm.PackageManager
import android.util.Base64
import android.util.Log
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
like image 51
Vinayak B Avatar answered Dec 16 '25 08:12

Vinayak B


Nothing wrong in your code only one change needed Please add import android.util.Base64 instead of import java.util.*

like image 34
Ketan Patel Avatar answered Dec 16 '25 09:12

Ketan Patel