十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)android 安卓APP獲取手機(jī)設(shè)備信息和手機(jī)號碼的代碼示例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
準(zhǔn)備條件:一部安卓手機(jī)、手機(jī)SIM卡確保插入手機(jī)里、eclipse ADT和android-sdk開發(fā)環(huán)境
第一步:新建一個(gè)android工程(JinshanTest),
并需要在工程的AndroidManifest.xml文件中,添加權(quán)限
第二步:新建一個(gè)工具類PhoneInfo.java
1.package com.jinshan.test;
2.
3.
4.import android.content.Context;
5.import android.telephony.TelephonyManager;
6.
7./**
8. * 讀取手機(jī)設(shè)備信息測試代碼
9. * http://www.souapp.com 搜應(yīng)用網(wǎng)
10. * song2c@163.com
11. * 宋立波
12. */
13.public class PhoneInfo {
14.
15. private TelephonyManager telephonyManager;
16. /**
17. * 國際移動用戶識別碼
18. */
19. private String IMSI;
20. private Context cxt;
21. public PhoneInfo(Context context) {
22. cxt=context;
23. telephonyManager = (TelephonyManager) context
24. .getSystemService(Context.TELEPHONY_SERVICE);
25. }
26.
27. /**
28. * 獲取電話號碼
29. */
30. public String getNativePhoneNumber() {
31. String NativePhoneNumber=null;
32. NativePhoneNumber=telephonyManager.getLine1Number();
33. return NativePhoneNumber;
34. }
35.
36. /**
37. * 獲取手機(jī)服務(wù)商信息
38. */
39. public String getProvidersName() {
40. String ProvidersName = "N/A";
41. try{
42. IMSI = telephonyManager.getSubscriberId();
43. // IMSI號前面3位460是國家,緊接著后面2位00 02是中國移動,01是中國聯(lián)通,03是中國電信。
44. System.out.println(IMSI);
45. if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
46. ProvidersName = "中國移動";
47. } else if (IMSI.startsWith("46001")) {
48. ProvidersName = "中國聯(lián)通";
49. } else if (IMSI.startsWith("46003")) {
50. ProvidersName = "中國電信";
51. }
52. }catch(Exception e){
53. e.printStackTrace();
54. }
55. return ProvidersName;
56. }
57.
58. public String getPhoneInfo(){
59. TelephonyManager tm = (TelephonyManager)cxt.getSystemService(Context.TELEPHONY_SERVICE);
60. StringBuilder sb = new StringBuilder();
61.
62. sb.append("\nDeviceId(IMEI) = " + tm.getDeviceId());
63. sb.append("\nDeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion());
64. sb.append("\nLine1Number = " + tm.getLine1Number());
65. sb.append("\nNetworkCountryIso = " + tm.getNetworkCountryIso());
66. sb.append("\nNetworkOperator = " + tm.getNetworkOperator());
67. sb.append("\nNetworkOperatorName = " + tm.getNetworkOperatorName());
68. sb.append("\nNetworkType = " + tm.getNetworkType());
69. sb.append("\nPhoneType = " + tm.getPhoneType());
70. sb.append("\nSimCountryIso = " + tm.getSimCountryIso());
71. sb.append("\nSimOperator = " + tm.getSimOperator());
72. sb.append("\nSimOperatorName = " + tm.getSimOperatorName());
73. sb.append("\nSimSerialNumber = " + tm.getSimSerialNumber());
74. sb.append("\nSimState = " + tm.getSimState());
75. sb.append("\nSubscriberId(IMSI) = " + tm.getSubscriberId());
76. sb.append("\nVoiceMailNumber = " + tm.getVoiceMailNumber());
77. return sb.toString();
78. }
79.}第三步:在啟動的Activity,JinshanTestActivity中添加,調(diào)用代碼:
1.package com.jinshan.test;
2.
3.import android.app.Activity;
4.import android.os.Bundle;
5.
6.public class JinshanTestActivity extends Activity {
7. /** Called when the activity is first created. */
8. @Override
9. public void onCreate(Bundle savedInstanceState) {
10. super.onCreate(savedInstanceState);
11. setContentView(R.layout.main);
12.
13. PhoneInfo siminfo = new PhoneInfo(JinshanTestActivity.this);
14. System.out.println("getProvidersName:"+siminfo.getProvidersName());
15. System.out.println("getNativePhoneNumber:"+siminfo.getNativePhoneNumber());
16. System.out.println("------------------------");
17. System.out.println("getPhoneInfo:"+siminfo.getPhoneInfo());
18. }
19.
20.
21.
22.}第四步,把手機(jī)使用USB線,連接到電腦上,確保是連通性,開始運(yùn)行工程

最后,我們看LOGCAT日志,結(jié)果如下:
------------------------------------------------------------
04-01 16:20:57.105: I/System.out(952): 460003121934674
04-01 16:20:57.105: I/System.out(952): getProvidersName:中國移動
04-01 16:20:57.115: I/System.out(952): getNativePhoneNumber:136XXXXXXX
04-01 16:20:57.115: I/System.out(952): ------------------------
04-01 16:20:57.145: I/System.out(952): getPhoneInfo:
04-01 16:20:57.145: I/System.out(952): DeviceId(IMEI) = 352XXXXXXXX61328
04-01 16:20:57.145: I/System.out(952): DeviceSoftwareVersion = 01
04-01 16:20:57.145: I/System.out(952): Line1Number = 136XXXXXXX
04-01 16:20:57.145: I/System.out(952): NetworkCountryIso = cn
04-01 16:20:57.145: I/System.out(952): NetworkOperator = 46000
04-01 16:20:57.145: I/System.out(952): NetworkOperatorName = 中國移動
04-01 16:20:57.145: I/System.out(952): NetworkType = 2
04-01 16:20:57.145: I/System.out(952): PhoneType = 1
04-01 16:20:57.145: I/System.out(952): SimCountryIso = cn
04-01 16:20:57.145: I/System.out(952): SimOperator = 46000
04-01 16:20:57.145: I/System.out(952): SimOperatorName = CMCC
04-01 16:20:57.145: I/System.out(952): SimSerialNumber = 898xxxxxx90108
04-01 16:20:57.145: I/System.out(952): SimState = 5
04-01 16:20:57.145: I/System.out(952): SubscriberId(IMSI) = 46000xxxxxxxx4674
那么我們來解釋一下上面的信息具體代表啥意思。
getNativePhoneNumber 獲取的手機(jī)號
DeviceId(IMEI)手機(jī) 國際移動用戶識別碼
NetworkOperator 移動運(yùn)營商編號
NetworkOperatorName 移動運(yùn)營商名稱
SimSerialNumber SimOperator SimCountryIso SimSerialNumber SubscriberId(IMSI) 關(guān)于手機(jī)SIM卡的一些詳細(xì)信息
其實(shí)代碼中沒有寫 獲取System.ANDROID_ID這個(gè)操作,因?yàn)楹芏嗍謾C(jī)設(shè)備獲取不到andnroid_id
當(dāng)然了,我們今天主要講述
如果想獲得WIFI,藍(lán)牙,GPS,讀寫SDCARD更多的信息,就需要添加其它的權(quán)限。
此外,本次測試我拿自己的手機(jī)SIM卡測試是可以獲取到手機(jī)號碼的,當(dāng)然了有些手機(jī)號碼是獲取不到的,這里也給大家羅列了原因,
手機(jī)號碼不是所有的都能獲取。只是有一部分可以拿到。
這個(gè)是由于移動運(yùn)營商沒有把手機(jī)號碼的數(shù)據(jù)寫入到sim卡中.SIM卡只有唯一的編號,供網(wǎng)絡(luò)與設(shè)備識別那就是IMSI號碼,手機(jī)的信號也可以說是通過這個(gè)號碼在網(wǎng)絡(luò)中傳遞的,并不是手機(jī)號碼。試想,你的SIM丟失后,補(bǔ)辦一張新的會換號碼嗎?是不會的.就是因?yàn)樵谀愕氖謾C(jī)號碼對應(yīng)的IMSI號 在移動運(yùn)營商中被修改成新SIM卡的IMSI號碼。
那么手機(jī)號為什么有的就能顯示呢?
這個(gè)就像是一個(gè)變量,當(dāng)移動運(yùn)營商為它賦值了,它自然就會有值。不賦值自然為空。
對于移動的用戶,手機(jī)號碼(MDN)保存在運(yùn)營商的服務(wù)器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些驗(yàn)證信息。手機(jī)每次入網(wǎng)注冊的時(shí)候,都會以短信的形式將IMSI及驗(yàn)證信息上傳到運(yùn)營商的服務(wù)器,服務(wù)器在完成注冊動作之后,會以短信的形式將注冊的結(jié)果下發(fā)到手機(jī)里。下發(fā)的內(nèi)容會因條件不同而不同。
如果服務(wù)器在下發(fā)的短信中,不包含手機(jī)的號碼,手機(jī)是無法取得電話號碼。如果短信中包含了號碼,手機(jī)才會將其緩存,以備他用.此外,對于其他運(yùn)行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能夠取得本機(jī)號碼不太可能。
移動神州行,聯(lián)通的卡是可以取到的.動感地帶的取不到.別的卡還沒有試過.
能夠讀取SIM卡號的話應(yīng)該有前提.那就是SIM卡已經(jīng)寫入了本機(jī)號碼,不然是無法讀取的。
關(guān)于“android 安卓APP獲取手機(jī)設(shè)備信息和手機(jī)號碼的代碼示例”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。