Below I from the perspective of Android development, simply write how to get mobile device information and mobile phone number
Preparation conditions: An Android phone, mobile SIM card to ensure plug-in phone, Eclipse ADT and ANDROID-SDK development environment
First step: Create a new Android project (Jinshantest),
and need to add permissions in the project's Androidmanifest.xml file
<uses-permission android:name= "Android.permission.READ_PHONE_STATE"/>
Legend:
Step Two: Create a new tool class Phoneinfo.java
1.package com.jinshan.test;
2.
3.
4.import android.content.Context;
5.import android.telephony.TelephonyManager;
6.
7./**
8. * Read mobile device information test code
9. * http://www.souapp.com 搜 应用 网
10. * [email protected]
11. * Song Libo
12. * /
13.public class PhoneInfo {
14.
15. private TelephonyManager telephonyManager;
16. / **
17. * International Mobile Subscriber Identity
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. * Get Phone Number
29. * /
30. public String getNativePhoneNumber () {
31. String NativePhoneNumber = null;
32. NativePhoneNumber = telephonyManager.getLine1Number ();
33. return NativePhoneNumber;
34.}
35.
36. / **
37. * Get mobile phone service provider information
38. * /
39. public String getProvidersName () {
40. String ProvidersName = "N / A";
41. try {
42. IMSI = telephonyManager.getSubscriberId ();
43. // The first three digits of the IMSI number are 460, and the next two digits are 00, China Mobile, 02, China Unicom, and 03, China Telecom.
44. System.out.println (IMSI);
45. if (IMSI.startsWith ("46000") || IMSI.startsWith ("46002")) {
46. ProvidersName = "China Mobile";
47.} else if (IMSI.startsWith ("46001")) {
48. ProvidersName = "China Unicom";
49.} else if (IMSI.startsWith ("46003")) {
50. ProvidersName = "China Telecom";
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.}
Step three: Add the calling code in the activity,jinshantestactivity that starts:
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.}
Fourth step, connect your phone to your computer using a USB cable, and make sure it's connected and start working on the project
Finally, we look at the Logcat log and the results are as follows:
------------------------------------------------------------
04-01 16:20:57.105:i/system.out (952): 460003121934674
04-01 16:20:57.105:i/system.out (952): Getprovidersname: China Mobile
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 = China Mobile
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
So let's explain what the above information means.
Getnativephonenumber Get the phone number
DeviceId (IMEI) Mobile International Mobile Subscriber ID
Networkoperator Mobile operator number
Networkoperatorname Mobile operator Name
Simserialnumber simoperator simcountryiso simserialnumber SubscriberId (IMSI) Some details about mobile SIM card
In fact, the code does not write to get system.android_id this operation, because many mobile devices do not get andnroid_id
Of course, today we mainly talk about <uses-permission android:name= "Android.permission.READ_PHONE_STATE"/> Light Use this permission we can get mobile device information and mobile phone number
If you want to get WiFi, Bluetooth, GPS, read-write sdcard more information, you need to add additional permissions.
In addition, this test I take my phone SIM card test is able to get to the mobile phone number, of course, some mobile phone number is not available, here also gives you a list of reasons,
Mobile phone numbers are not available for all. Just a part of it can get.
This is due to the fact that the mobile operator does not write data from the mobile phone number to the SIM card. The SIM card only has the unique number, for the network and the device recognition that is the IMSI number, the cell phone signal also can say is passes through this number in the network, is not the mobile phone number. Just imagine, after your SIM is lost, do you have a new one that will change the number? No, it is because the IMSI number that corresponds to your mobile phone number is modified in the mobile operator to the IMSI number of the new SIM card.
So why does the phone number have to show it?
This is like a variable, and when the mobile operator assigns it a value, it will naturally have a value. No value is naturally empty.
For mobile users, the mobile number (MDN) is saved in the operator's server instead of being stored in the SIM card. The SIM card retains only IMSI and some verification information. Every time the mobile network registration, will be in the form of text messages to the IMSI and authentication information to the operator's server, the server after the completion of the registration action, will be in the form of text messages will be issued to the mobile phone. The content will be different depending on the conditions.
If the server in the issued text message, does not include the phone number, the phone is unable to obtain the phone number. If the text contains a number, the phone will cache it for his use. In addition, for other operators ' SIM cards or Uim cards, the MDN may be saved in the UIM card. 100% being able to get a native number is unlikely.
Mobile Shenzhou Line, Unicom's card can be taken. The dynamic zone is not available. Other cards have not been tried yet.
The ability to read the SIM card number should have a precondition. That is, the SIM card has been written to the local number, otherwise it cannot be read.
Other great article articles
Android KSOAP2 call. NET Webservicejquery Tutorial (8)- Using the reverse Insert method for DOM tree operation Android Learning Note (34) using Alertdialog to create a simple dialog box Android learning Note (33) Gallery View (Gallery) features and usage Android navidgation drawer How to change the list selection in the navigation drawer ...
More about Android development articles
Sample code for Android app to get mobile device information and mobile phone number