I'd like my app to compute and show a hash of the app's apk file. It's easily done in Java, but how do I do it for an apk?
The problem is to get a path to the app's apk. In Java
URL url = AutoCheck.class.getResource("Main.class") ;
will find the needed url.
I get the hash code with this code
private void getHash(){
try {
PackageInfo info = getPackageManager().getPackageInfo(YourPackageName, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
System.out.println("keyhash: " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (Exception e) {
System.out.println("cannot obtain keyhash, " + e.toString());
}
}
Not sure if this is what you need though
Related
I have a requirement where i need to find the APK Cert sha256 . I am able to find the SHA1 and MD5 using signing report in android studio. But i could not find SHA256 cert. How can i find that.
use this method:
//HashKey Generator
public static String getProjectHashKey(Context context) {
String hashKey = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
hashKey = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d("KeyHash:", hashKey);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return hashKey;
}
I am getting the "Invalid key hash" error on my Android even though my app is in production and the facebook app is set as public. If I put the key hash into the facebook settings it works fine, but I suppose this would only work on my own device. What am I getting wrong here?
You have to create a release apk and print keyhash using this method. and set that keyHash in fb consol.
public static void printHashKey(Context context)
{
// Add code to print out the key hash
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
com.example.app.BuildConfig.APPLICATION_ID,
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 (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
Follow this steps for solution.
Paste this code in your activity.
public static void printHashKey(Context context)
{
// Add code to print out the key hash
try
{
PackageInfo info = context.getPackageManager().getPackageInfo( com.example.app.BuildConfig.APPLICATION_ID, 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 (PackageManager.NameNotFoundException e)
{
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
Sign your APK.(release APK)
Install generated signed APK to your mobile
Connect your phone with pc.
Now open screen where you put above code.
Here your can see new HashKey in logcat
Paste this HashKey in Facebook developer site where you app created.
Enjoy with your application.
I have tried hash key using .android debug key but still not getting my LinkedIn app connected with my App.
And also getting error like when i link with my Facebook App, LinkedIn also showing linked automatically.
Am i attach Facebook hash key in LinkedIn Account?
Please help me to get the correct hash key for eclipse specially.
public void generateHashkey(){
try {
PackageInfo info = getPackageManager().getPackageInfo(
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 (PackageManager.NameNotFoundException e) {
Log.d(TAG, e.getMessage(), e);
} catch (NoSuchAlgorithmException e) {
Log.d(TAG, e.getMessage(), e);
}
}
I have this problem, I create FB login with FB SDK Android with java in Eclipse. When i debug and run this app in Android Emulator all is correct, i can login i can logout. But when i export app to develop version (.apk), and install it at my phone or at genymotion emulator i geting this errors:
"Invlaid key hash. The key hash xxxxxxxxxxxxxxxxxxx does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/72012084472886"
The hash key is create correoct i use this:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}
Do you have some idea, what is wrong?
Thank you .
When you run an app via ADB Eclipse usually uses a keystore named debug.keystore, this keystore is usually the one you don't use on production apps. When you export your app and create a keystore, the keyhash will change value because you change keystore.
You can implement this code to your app so you can echo the keyhash to you stackrace:
public static void printHashKey(Context pContext) {
try {
PackageInfo info = getPackageInfo(pContext, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
}
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "printHashKey()", e);
} catch (Exception e) {
Log.e(TAG, "printHashKey()", e);
}
}
The snippet is only suitable for development, not for production!
Hi I got keyhash and i want to insert it into keyhash of Facebook apps page but they are not allowing me to enter please any body help me how to resolve that issue
I am uploading that picture my key hash : Iu2kwPnylF8OKtVqPSY/r6kBGG8
when i try to click on save changes it will still not allowing me
Generates keyhas with this code:
try {
PackageInfo info = getPackageManager().getPackageInfo("Your.packet.name",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) {
}
If you already previously generated more usher in the code that you have shown keyhash ultimately lacks the symbol " = "