Android開發——獲取並生成唯一識別碼

方法一:不需要權限(推薦)

使用一些不需要權限的硬件設備碼來生成Android設備的唯一識別碼

//獲得獨一無二的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();

方法二:在接受需要用戶授權的情況下生成唯一識別碼:

需要添加權限,當然也需要做動態權限適配。

<uses-permission android.permission.READ_PHONE_STATE/>

方法如下:

 public static String getAPPID(){
        final TelephonyManager tm = (TelephonyManager) MyApplication.getContext().getSystemService(Context.TELEPHONY_SERVICE);
        final String tmDevice, tmSerial, androidId;
        tmDevice = "" + tm.getDeviceId();
        tmSerial = "" + tm.getSimSerialNumber();
        androidId = "" + android.provider.Settings.Secure.getString(MyApplication.getContext().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

        UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
        return deviceUuid.toString();

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章