2011年9月10日

Android : 應用程式的唯一ID

Android Developers Blog: Identifying App Installations:
該文章建議使用UUID來作註冊號碼,若要與機器相關且唯一,則Android v2.3 版之後可用底下的ANDROID_ID,但之前的v2.2版會抓到同一個數字9774d56d682e549c !!
String android_id =  Settings.Secure.getString(getContentResolver(),        android.provider.Settings.Secure.ANDROID_ID);

本以為呼叫 getLine1Number()就可輕鬆得知手機號碼,實測之後發現只有一片古老的中華電信sim卡,可以抓到手機號碼。上網google一下,才發現手機號碼可能不會存在sim卡中。

倒是 IMSI (International Mobile Subscriber Identity)會和手機號碼對應,而 IMEI( International Mobile Equipment Identity) 是手機裝置的類似身份證號碼,手機撥打*#06#會顯示。

TelephonyManager mTM= 
(TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
String imsi  = mTM.getSubscriberId();
String imei  = mTM.getDeviceId(); 
String iccid = mTM.getSimSerialNumber();  

所以呢,IMSI和ICCID會綁住SIM卡,而IMEI會綁住機子

記得在 AndroidManifest.xml中,加上准許權限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
爬文找到另一個OS的特徵 android.os.Build.FINGERPRINT,與作業系統、版子、cpu、版本、廠商等相關,只是怕同一機型的會是同一個值。因手上無相同機子可試,盼若有網友測試後,煩請告知,Thanks :)

沒有留言: