Android 使用代码获取签名信息
来源:互联网 发布:淘宝店铺转让合同模板 编辑:程序博客网 时间:2024/06/16 15:07
在使用百度地图,微信分享等等第三方SDK的时候,都需要在对应的网站上注册应用信息,其中之一就是通过包名和签名生成一个MD5或者SHA1编码的字符串。
通常情况下,这些信息可以通过ADT工具或者keytool命令工具去获取,这两种方式百度有很多就不再累述了。主要说一下怎么使用代码获取这些信息,然后也方便使用,不像微信提供的签名工具那么抠,都不能复制这些信息,极为不方便。
首先看一下使用keytool获取的签名信息:
证书指纹有3个类型,一般要求是前两个。这里就直接贴上代码获取这些证书指纹。
<span style="font-family: Arial, Helvetica, sans-serif;">/**</span>
* 应用签名信息 * Created by Carlton on 2014/11/27. */public class AppSigning{ public final static String MD5 = "MD5"; public final static String SHA1 = "SHA1"; public final static String SHA256 = "SHA256"; /** * 返回一个签名的对应类型的字符串 * * @param context * @param packageName * @param type * * @return */ public static ArrayList<String> getSingInfo(Context context, String packageName, String type) { ArrayList<String> result = new ArrayList<String>(); try { Signature[] signs = getSignatures(context, packageName); for (Signature sig : signs) { String tmp = "error!"; if (MD5.equals(type)) { tmp = getSignatureString(sig, MD5); } else if (SHA1.equals(type)) { tmp = getSignatureString(sig, SHA1); } else if (SHA256.equals(type)) { tmp = getSignatureString(sig, SHA256); } result.add(tmp); } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 返回对应包的签名信息 * * @param context * @param packageName * * @return */ public static Signature[] getSignatures(Context context, String packageName) { PackageInfo packageInfo = null; try { packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES); return packageInfo.signatures; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; } /** * 获取相应的类型的字符串(把签名的byte[]信息转换成16进制) * * @param sig * @param type * * @return */ public static String getSignatureString(Signature sig, String type) { byte[] hexBytes = sig.toByteArray(); String fingerprint = "error!"; try { MessageDigest digest = MessageDigest.getInstance(type); if (digest != null) { byte[] digestBytes = digest.digest(hexBytes); StringBuilder sb = new StringBuilder(); for (byte digestByte : digestBytes) { sb.append((Integer.toHexString((digestByte & 0xFF) | 0x100)).substring(1, 3)); } fingerprint = sb.toString(); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return fingerprint; }}
如果你的keystore里面就只有一个签名信息,那么可以这样获取,以获取MD5为例:
String md5Info= AppSigning.<span style="font-family: Arial, Helvetica, sans-serif;">getSingInfo(context, "com.xxx",AppSigning.MD5).get(0);</span>
2 0
- Android 使用代码获取签名信息
- android获取签名信息
- Android:获取APK签名信息
- Android:获取APK签名信息 .
- android获取应用签名信息
- 获取android签名相关信息
- Android获取apk签名信息
- Android 获取jks签名信息
- Android 签名打包出现的错误的解决方法以及代码中获取应用签名信息方法
- 获取Android的APK包签名信息
- android 获取应用证书及签名信息
- Android获取应用的签名信息
- Android获取应用自身相关签名信息
- Android获取应用的签名信息
- Android获取应用的签名信息
- 获取Android Debug签名证书的信息
- Android获取应用自身相关签名信息
- Android 获取签名信息 MD5、SHA值
- Django-Rest-Framework 教程
- 哈夫曼编码
- Android HWComposer
- 【JS】【Core】数组
- 汉字统计
- Android 使用代码获取签名信息
- 七种常见的VB排序算法示例程序
- hdu 4960 Another OCD Patient 2014 Multi-University Training Contest 9
- 关于OA权限管理——第一步、准备
- Git-03_工作区-暂存区
- Java小项目点餐系统(三)之数据库端
- Windows钩子
- 018java 包装类
- cocoapod安装和使用