每支手機都有唯一的 IMEI(International Mobile Equipment Identity number) 與 IMSI(International Mobile Subscriber Identity),因此有些程式會利用這些碼來當做產品註冊時使用。
我們可透過 TelephonyManager 來取得這些資訊,同時也能取得跟提供電信服務的相關資料,例如:電信公司名稱、行動網路類型或行動通訊類型等等。
只要先取得 Context.TELEPHONY_SERVICE 後,就能利用 TelephonyManager 來取得需要的內容:
檢視原始碼 Android
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import android.content.Context; import android.telephony.TelephonyManager; TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); // 手機號碼 String lineNumber = telManager.getLine1Number(); // 手機 IMEI String imei = telManager.getDeviceId(); // 手機 IMSI String imsi = telManager.getSubscriberId(); // 手機漫遊狀態 String roamingStatus = telManager.isNetworkRoaming() ? "漫遊中" : "非漫遊"; // 電信網路國別 String country = telManager.getNetworkCountryIso(); // 電信公司代號 String operator = telManager.getNetworkOperator(); // 電信公司名稱 String operatorName = telManager.getNetworkOperatorName(); // 行動網路類型 String[] networkTypeArray = {"UNKNOWN", "GPRS", "EDGE", "UMTS", "CDMA", "EVDO 0", "EVDO A", "1xRTT", "HSDPA", "HSUPA", "HSPA"}; String networkType = networkTypeArray[telManager.getNetworkType()]; // 行動通訊類型 String[] phoneTypeArray = {"NONE", "GSM", "CDMA"}; String phoneType = phoneTypeArray[telManager.getPhoneType()]; |
當然要讀取手機的資訊也是要有權限允許的:
檢視原始碼 XML
1 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
不過好像除了遠傳電信之外,其它幾家的都無法使用 getLine1Number() 來取得電話號碼。
請問一下,該如何修改android裡顯示的電信名稱呢?如中華電信改成CHT MOBILE
這沒試過耶...我猜那名稱是寫在 sim 卡中的吧
可以問一個問題嗎
簡訊的api套件名稱是什麼阿
是這個嗎org.apache.http.message
是 android.telephony.gsm.SmsManager 的 sendTextMessage()
你好阿 可以請問你如何抓到手機號碼嗎 我試了你寫的也都直接出現強制關閉 我有給權限 我參考別人寫的也都出現錯誤耶 可以請您在試試看這個功能然後幫大家解答嗎
手機號碼現在已經不一定抓的到了, SIM 卡上大多不會儲存手機號碼!!
南丁老師你好 不知你是否有用過phonegap?
我想請問如何將抓到的IMEI 傳入phonegap中使用