/**
     * 获取设备唯一  UDID
     * @param context
     * @return
     */
    @SuppressLint("MissingPermission")
    public static String getUDID(Context context){
        String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        if(!androidID.equals("")){
            try {
                if (!"9774d56d682e549c".equals(androidID)) {
                    androidID = UUID.nameUUIDFromBytes(androidID.getBytes("utf8")).toString();
                } else {
                    @SuppressLint("MissingPermission")
                    final String deviceId = ((TelephonyManager) context.getSystemService( TELEPHONY_SERVICE )).getDeviceId();
                    androidID = deviceId!=null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")).toString() : UUID.randomUUID().toString();
                }
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            return androidID;
        }

        //需要权限  android.permission.READ_PHONE_STATE
        TelephonyManager TelephonyMgr = (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
        String szImei = TelephonyMgr.getDeviceId();
        if(!szImei.equals("")){
            return szImei;
        }

        //需要权限  android.permission.ACCESS_WIFI_STATE
        WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();
        if(!m_szWLANMAC.equals("")){
            return m_szWLANMAC;
        }

        //需要权限  android.permission.BLUETOOTH
        BluetoothAdapter m_BluetoothAdapter = null;
        m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        String m_szBTMAC = m_BluetoothAdapter.getAddress();
        if(!m_szBTMAC.equals("")){
            return m_szBTMAC;
        }
        return getUniquePsuedoID();
    }
    //获得 Psuedo ID
    public static String getUniquePsuedoID() {
        String serial = null;
        String m_szDevIDShort = "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 ; //13 位
        try {
            serial = android.os.Build.class.getField("SERIAL").get(null).toString();
            //API>=9 使用serial号
            return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
        } catch (Exception exception) {
            //serial需要一个初始化,随意值
            serial = "serial";
        }

        //使用硬件信息拼凑出来的15位号码
        return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
    }

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐