android获取apk签名信息

因为工作需要,需要获取应用的apk传递给新浪微博或者微信去申请授权 所以需要程序内获取签名上传服务器

做法如下:

public static String getAPPSecretString(Activity activity){

String backString="";

try {

PackageInfo mPackageInfo=activity.getPackageManager().getPackageInfo(GlobalConfig.APP_PACKAGE_NAME, 64);

Signature xx[]=mPackageInfo.signatures;

byte[] arrayOfByte= mPackageInfo.signatures[0].toByteArray();

backString= digest(arrayOfByte);

} catch (NameNotFoundException e1) {

e1.printStackTrace();

}

return backString;

}

private static final char hexDigits[] = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘,

‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ };

public static final String digest(String message) {

try {

byte[] strTemp = message.getBytes();

MessageDigest mdTemp = MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);

byte[] md = mdTemp.digest();

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

public static final String digest(byte[] strTemp) {

try {

// byte[] strTemp = message.getBytes();

MessageDigest mdTemp = MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);

byte[] md = mdTemp.digest();

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

时间: 2024-10-16 06:46:19

android获取apk签名信息的相关文章

android获取APK签名信息及MD5指纹

1.获取APK的签名信息 01 private String showUninstallAPKSignatures(String apkPath) { 02          String PATH_PackageParser = "android.content.pm.PackageParser"; 03          try { 04              // apk包的文件路径 05              // 这是一个Package 解释器, 是隐藏的 06   

Android进阶之获取APK签名信息及MD5指纹

1 Android进阶之获取APK签名信息及MD5指纹 package com.guesslive.caixiangji.util; public class SignUtils { private static final String ALGORITHM = "RSA"; private static final String SIGN_ALGORITHMS = "SHA1WithRSA"; private static final String DEFAULT

获取apk签名信息(已经安装和未安装的)

import java.io.File; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import ja

Android 发布Apk签名

1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装). 2.签名的步骤 a.创建key b.使用步骤a中产生的key对apk签名 3.具体操作 方法一: 命令行下对apk签名(原理) 创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对a

php获取apk包信息

这段时间太忙了,一个月没有写博客了,稍微闲下来就感觉把在开发中遇到的问题记录下来 php上传安卓apk包的时候,需要获取安卓apk包内的信息 <?php /*解析安卓apk包中的压缩XML文件,还原和读取XML内容 依赖功能:需要PHP的ZIP包函数支持.*/ include('./Apkparser.php'); $appObj = new Apkparser(); $targetFile = a.apk;//apk所在的路径地址 $res = $appObj->open($targetFi

Android获取全部联系人信息的例子

先定义一个显示条目的xml布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_conte

[Android_提交前工作]android项目apk签名

生成apk最懒惰的方法是:只要你运行过android项目,到工作目录的bin文件夹下就能找到与项目同名的apk文件,这种apk默认是已经使用debug用户签名的. 如果想要自己给apk签名: 1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装).2.签名的步骤 a.创建key b.使用步骤a中产生的k

android获取周围AP信息

1.增加权限: 由于此应用需要获取手机的网络信息,wifi信息,因此需要在AndroidManifest.xml文件中添加相关权限,否则会报permission deny错误: 1 <uses-permission android:name="android.permission.INTERNET"/> 2 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">

Android - 查看Android应用(apk)签名

查看Android应用(apk)签名 本文地址: http://blog.csdn.net/caroline_wendy 在微博.微信开放平台注册应用时,需要填写应用(apk)的签名,可以使用keytool工具找到已签名应用的签名. 1. 使用解压缩工具,找到apk包内的CERT.RSA文件,这个文件就包含应用的签名. 2. 使用命令: keytool -printcert -file CERT.RSA 输出文件的签名,包含三种: MD5,SHA1,SHA256,一般选择MD5,32个符号.