1. IMEI(android developer說明)
TelephonyManager tM=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tM.getDeviceId();
Log.v("ola_log", "imei:" + imei);
權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
說明:手機的IMEI值。缺點:由權限(READ_PHONE_STATE)可看出,IMEI值為"電話"的屬性,對於Wifi版本的平板會取得NULL值。
2. Android_id(android developer說明)
String android_id = Secure.getString(this.getBaseContext().getContentResolver(), Secure.ANDROID_ID);
Log.v("ola_log", "android_id:" + android_id);
說明:設備第一次啟動時產生的序號。缺點:網路上部分文章指出,某些廠牌會有android_id重複的情況產生;當機器回原廠設定時,Android_id將會變更。
3. Wifi MAC(android developer說明)
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Log.v("ola_log", "MacAddress:" + wifiInfo.getMacAddress());
權限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
說明:Wifi的MAC。缺點:網路上部分文章指出,機器沒有開啟Wifi時取不到MAC;但我關閉平板Wifi還是正常取到值。
4. Build.SERIAL(android developer說明)
String BuildSERIAL = android.os.Build.SERIAL;
Log.v("ola_log", "BuildSERIAL:" + BuildSERIAL);
說明:硬體的唯一值。缺點:該值必須要API Level 9才支援;這個問題看專案類型可大可小,對於某些專案來說甚至不是問題。
5. UUID(android developer說明)
String UUID_Value = UUID.randomUUID().toString();
Log.v("ola_log", "UUID_Value:" + UUID_Value);
說明:randomUUID可以隨機的製造一個唯一值,或是利用其他內建方法製造唯一值(EX:nameUUIDFromBytes (byte[] name))。缺點:必須要自己處理UUID的製造及儲存,若使用randomUUID則代表的是"該次安裝的唯一值"。
感覺一件很簡單的事情,其實也不單純勒。
沒有留言:
張貼留言