Android 11 系统定制--添加应用安装签名白名单
  xuTp9NClH4Zw 2023年11月02日 51 0

客户需要禁用应用安装,对在签名md5白名单中的应用安装放行

@GuardedBy("mInstallLock")
    private PrepareResult preparePackageLI(InstallArgs args, PackageInstalledInfo res)
            throws PrepareFailure {
            ............
 
            //boyin start 
            
            boolean allowIntall = android.provider.Settings.System.getInt(mContext.getContentResolver(), "allow_install", 1) == 1;
            if(systemApp||allowIntall){

            }else{
                allowIntall = false;
                String signMd5 = getSignValidString(parsedPackage.getSigningDetails().signatures[0].toByteArray());
                Slog.i(TAG, "boyin sign " + signMd5);
                String[] defaultSign = new String[]{"B26BBC0BED642E73DE40B97F7092487A","68968881A23F1B89D4337CCD64FB7EBA"};//预设 mamayizhan 和weici签名应用
                for (String s : defaultSign) {
                    if(s.equalsIgnoreCase(signMd5)){
                        allowIntall = true;
                    }
                }
                String whiteList = android.provider.Settings.System.getString(mContext.getContentResolver(),"allow_install_white_list");
                if(whiteList !=null && !whiteList.isEmpty() && whiteList.length()>2){//如果列表不为空,并且长度大于2
                    String[] list  = whiteList.split(",");
                    for (String s : list) {
                        if (s.equalsIgnoreCase(signMd5)) {
                            allowIntall = true;
                        }
                    }
                }

            }
            if(allowIntall == false){
                throw new PrepareFailure(INSTALL_FAILED_INSTANT_APP_INVALID,
                                "system did not allow install this app, because signatures not in white list");
            }
            
            //boyin end
            .............
            }

获取签名md5方法getSignValidString

    //boyin start
     private String getSignValidString(byte[] paramArrayOfByte)  {
        MessageDigest localMessageDigest = null;
        try {
            localMessageDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
        localMessageDigest.update(paramArrayOfByte);
        return toHexString(localMessageDigest.digest());
    }

    public String toHexString(byte[] paramArrayOfByte) {
        if (paramArrayOfByte == null) {
            return null;
        }
        StringBuilder localStringBuilder = new StringBuilder(2 * paramArrayOfByte.length);
        for (int i = 0; ; i++) {
            if (i >= paramArrayOfByte.length) {
                return localStringBuilder.toString();
            }
            String str = Integer.toString(0xFF & paramArrayOfByte[i], 16);
            if (str.length() == 1) {
                str = "0" + str;
            }
            localStringBuilder.append(str);
        }
    }
        //boyin end
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
xuTp9NClH4Zw