該文章建議使用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 :)
沒有留言:
張貼留言