zoukankan      html  css  js  c++  java
  • app获取自己的签名

    package com.tencent.wework.api.lcx;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Iterator;
    import java.util.List;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.content.ClipData;
    import android.content.ClipboardManager;
    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.widget.Toast;
    
    public class LcxSignature {
    
        private Activity context;
    
        public LcxSignature(Activity context1) {
            context = context1;
        }
    
        /**
         * 遍历包名
         */
        public void getSign() {
            String paramString = context.getPackageName();
            
            showToast("包名 = " + paramString);
    
            PackageManager pm = context.getPackageManager();
            List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);
            Iterator<PackageInfo> iter = apps.iterator();
            while (iter.hasNext()) {
                PackageInfo packageinfo = iter.next();
                String packageName = packageinfo.packageName;
    
                if (packageName.equals(paramString)) {
                    showToast("签名 = " + MD5Encode(packageinfo.signatures[0].toByteArray()));
                }
            }
        }
    
        /**
         * 根据包名获取签名
         */
        @SuppressLint("NewApi")
        public void getRawSignature() {
    
            // String paramString = "com.lc.iotstandard.ht";
            String paramString = context.getPackageName();
    
            PackageManager localPackageManager = context.getPackageManager();
            PackageInfo localPackageInfo;
            try {
                localPackageInfo = localPackageManager.getPackageInfo(paramString,
                        PackageManager.GET_SIGNATURES);
                if (localPackageInfo == null) {
                    showToast("信息为 null, 包名 = " + paramString);
                    return;
                }
            } catch (PackageManager.NameNotFoundException localNameNotFoundException) {
                showToast("包名没有找到...");
                return;
            }
    
    //        String result = getSignature(paramString);
            String result = MD5Encode(localPackageInfo.signatures[0].toByteArray());
            showToast(result);
    
            ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
            cm.setPrimaryClip(ClipData.newPlainText(null, result));
        }
    
        /**
         * 根据包名获取签名
         * pkg: 包名
         */
        public String getSignature(String pkg) {
            try {
                PackageInfo var1;
                var1 = context.getPackageManager().getPackageInfo(pkg, PackageManager.GET_SIGNATURES);
                return MD5Encode(var1.signatures[0].toByteArray());
            } catch (Throwable var2) {
            }
            return "";
        }
    
        private static String MD5Encode(byte[] toencode) {
            try {
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.reset();
                md5.update(toencode);
                return HexEncode(md5.digest());
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return "";
        }
    
        @SuppressLint("DefaultLocale")
        private static String HexEncode(byte[] toencode) {
            StringBuilder sb = new StringBuilder(toencode.length * 2);
            for (byte b : toencode) {
                sb.append(Integer.toHexString((b & 0xf0) >>> 4));
                sb.append(Integer.toHexString(b & 0x0f));
            }
            return sb.toString().toUpperCase();
        }
    
        public void showToast(String info) {
            Toast toast = Toast.makeText(context, info, Toast.LENGTH_LONG);
            toast.show();
        }
    }
  • 相关阅读:
    课堂练习
    日程管理测试用例
    日程管理APP的测试计划和测试矩阵
    日程管理Bug Report
    图书管理系统活动图
    团队如何做决定?
    课堂练习
    课堂练习(NABCD Model)
    课堂练习
    日程管理的测试计划和测试矩阵
  • 原文地址:https://www.cnblogs.com/LcxSummer/p/13041889.html
Copyright © 2011-2022 走看看