android获取设备唯一标识

在通讯app中常常要获取设备的唯一标识来进行一些操作,但是在android6.0后获取imei是需要动态获取权限的,如果用户拒绝了权限那就什么都获取不到了。所以找到了另一种的解决方案拼接Build类里的一些信息。
大多数的Build成员都是字符串形式的,我们只取他们的长度信息。我们取到13个数字,并在前面加上“35”。这样这个ID看起来就和15位IMEI一样了。

  /**获取设备唯一识别码*/
    public static String getPhoneSign(){
        String info="";
        String deviceInfo="35"+ Build.BOARD.length()%10+Build.BRAND.length()%10+
                Build.CPU_ABI.length()%10+Build.DEVICE.length()%10+
                Build.DISPLAY.length()%10+Build.HOST.length()%10+
                Build.ID.length()%10+Build.MANUFACTURER.length()%10+
                Build.MODEL.length()%10+Build.PRODUCT.length()%10+
                Build.TAGS.length()%10+Build.TYPE.length()%10+
                Build.USER.length()%10;
        try {
            info=android.os.Build.class.getField("SERIAL").get(null).toString();
            return new UUID(deviceInfo.hashCode(),info.hashCode()).toString();
        }catch (Exception e){
            info="info";
        }
        return info;
    }

你可能感兴趣的:(android获取设备唯一标识)