因为工作需要,需要获取应用的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;}}