1. 程式人生 > >獲取安卓裝置唯一碼

獲取安卓裝置唯一碼

在使用獲取設定唯一碼的過程中

我們可以獲取Imei

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);

String szImei = TelephonyMgr.getDeviceId(); 
可以獲取Android ID等,但是這些方法在不同手機上有可能會返回null或者獲取不到
String m_szAndroidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 

最合適的辦法:Pseudo-Unique ID

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

“35”加上後面的13位一共15位,我們可以得到355715565309247這樣一串號碼,不需要任何的許可權,非常方便。

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

最終會得到這樣的一串ID:00000000-28ee-3eab-ffff-ffffe9374e72

參考:http://www.bkjia.com/Androidjc/1036506.html