獲取本機號碼:
獲取本機號碼,需要在配置文件中加入權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
本文中所講的需求簡單,明了,我說的簡單指的是只有一個需求,不復要,不復合,就是一個,取得本機號碼,請你看下面這代碼
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 獲取手機號碼 String phoneId = tm.getLine1Number(); Log.i(phoneId,phoneId);
你猜會怎么樣,取不到!奇怪吧,神奇吧~~~怎么的的,你就是沒有辦法取得本機號碼,這是為什么呢,有何良策,我心里在想啊,腫么辦!
我靜心一想解決問題得找到問題所在,不然無從下手...經我google/baidu,找到了基本的原因和曲線救國之解決方法,現邏列如后:
第一點:造成原因
能否取得手機號碼依賴於運營商是如何制作SIM卡的,所以有的可以取出,有的則不行。看吧,這不全是你的錯,哈哈~~~
第二點:解決方案
給10086發個短信就行了,然后獲取發件箱中的發件人號碼...反正給10086發短信或者打電話是免費的 ,但是你得注意了
1、獲取發件箱中的發件人號碼后你得把發件箱中記錄刪除;
2、就是你還要攔截10086給你回復的短信,不然會有個notification顯示在屏幕上方,提示10086發來個短信,讓你查看;
這些都是為了取得本機號碼的任務下,但同時又提高了用戶的體驗度...明白嗎?
獲取IMSI和IMEI需要在配置文件中加入權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
獲取IMEI號碼:
(1)IMEI(International Mobile Equipment Identity,國際移動身份識別碼):是由15位數字組成的”電子串號”,其組成結構為TAC(6位數字)+FAC(兩位數字)+SNR(6位數字)+SP (1位數字)。它與每台手機一一對應,而且該碼是全世界唯一的。每一只手機在組裝完成后都將被賦予一個全球唯一的一組號碼,這個號碼從生產到交付使用都將被制造生產的廠商所記錄。 IMEI碼貼在手機背面的標志上,並且讀寫於手機內存中。它也是該手機在廠家的”檔案”和”身份證號”。
/** * 獲取手機IMEI號 */ public static String getIMEI(Context context) { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId(); return imei; }
獲取IMSI號碼:
(2)IMSI(International Mobile Subscriber Identification Number,國際移動用戶識別碼):是區別移動用戶的標志,儲存在SIM卡中,可用於區別移動用戶的有效信息。其總長度不超過15位,同樣使用0~9的數字。其中MCC是移動用戶所屬國家代號,占3位數字,中國的MCC規定為460;MNC是移動網號碼,最多由兩位數字組成,用於識別移動用戶所歸屬的移動通信網;MSIN是移動用戶識別碼,用以識別某一移動通信網中的移動用戶。
/** * 獲取手機IMSI號 */ public static String getIMSI(Context context){ TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String imsi = mTelephonyMgr.getSubscriberId(); return imsi ; }
原文鏈接:android如何獲取本機號碼