1. 程式人生 > >Android開發——獲取並生成唯一識別碼

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();

    }