在通讯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;
}
网友评论