手 机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识 别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会的. 就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。

  那么手机号为什么有的就能显示呢?

  这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。

  对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息。手机每次入网 注册的时候,都会以短信的形式将IMSI及验证信息上传到运营商的服务器,服务器在完成注册动作之后,会以短信的形式将注册的结果下发到手机里。下发的内 容会因条件不同而不同。

  如果服务器在下发的短信中,不包含手机的号码,手机是无法取得电话号码。如果短信中包含了号码,手机才会将其缓存,以备他用.此外,对于其他运行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能够取得本机号码不太可能。

  移动神州行,联通的卡是可以取到的.动感地带的取不到.别的卡还没有试过.

能够读取SIM卡号的话应该有前提.那就是SIM卡已经写入了本机号码,不然是无法读取的。

  //记得在manifest file中添加

  < uses-permission

android:name="android.permission.READ_PHONE_STATE" />
具体处理代码:(程序在模拟器上无法实现,必须连接手机)

获取IMSI标识

String myIMSI = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI);

获取手机号

TelephonyManager telephonyMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String tel = telephonyMgr.getLine1Number();
======================完整示例============================
01.package com.pei.activity;
02.
03.import android.app.Activity;
04.import android.os.Bundle;
05.import android.view.View;
06.import android.view.View.OnClickListener;
07.import android.widget.Button;
08.import android.widget.TextView;
09.
10./**
11. * class name:AndroidUtilActivity<BR>
12. * class description:show get sim card info activity<BR>
13. * PS:注意权限 <BR>
14. * Date:2012-3-12<BR>
15. * @version 1.00
16. * @author CODYY)peijiangping
17. */
18.public class AndroidUtilActivity extends Activity {
19.    private Button button_getSIMInfo;
20.    private TextView number;
21.    private TextView privoid;
22.
23.    @Override
24.    public void onCreate(Bundle savedInstanceState) {
25.        super.onCreate(savedInstanceState);
26.        setContentView(R.layout.main);
27.        button_getSIMInfo = (Button) this.findViewById(R.id.getSIMInfo);
28.        number = (TextView) this.findViewById(R.id.textView1);
29.        privoid = (TextView) this.findViewById(R.id.textView2);
30.        button_getSIMInfo.setOnClickListener(new ButtonListener());
31.    }
32.
33.    class ButtonListener implements OnClickListener {
34.
35.        @Override
36.        public void onClick(View v) {
37.            if (v == button_getSIMInfo) {
38.                SIMCardInfo siminfo = new SIMCardInfo(AndroidUtilActivity.this);
39.                System.out.println(siminfo.getProvidersName());
40.                System.out.println(siminfo.getNativePhoneNumber());
41.                number.setText(siminfo.getNativePhoneNumber());
42.                privoid.setText(siminfo.getProvidersName());
43.            }
44.        }
45.
46.    }
47.}
package com.pei.activity;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;/*** class name:AndroidUtilActivity<BR>* class description:show get sim card info activity<BR>* PS:注意权限 <BR>* Date:2012-3-12<BR>* @version 1.00* @author CODYY)peijiangping*/
public class AndroidUtilActivity extends Activity {private Button button_getSIMInfo;private TextView number;private TextView privoid;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button_getSIMInfo = (Button) this.findViewById(R.id.getSIMInfo);number = (TextView) this.findViewById(R.id.textView1);privoid = (TextView) this.findViewById(R.id.textView2);button_getSIMInfo.setOnClickListener(new ButtonListener());}class ButtonListener implements OnClickListener {@Overridepublic void onClick(View v) {if (v == button_getSIMInfo) {SIMCardInfo siminfo = new SIMCardInfo(AndroidUtilActivity.this);System.out.println(siminfo.getProvidersName());System.out.println(siminfo.getNativePhoneNumber());number.setText(siminfo.getNativePhoneNumber());privoid.setText(siminfo.getProvidersName());}}}
}[java] view plaincopyprint?
01.package com.pei.activity;
02.
03.import android.content.Context;
04.import android.telephony.TelephonyManager;
05.
06./**
07. * class name:SIMCardInfo<BR>
08. * class description:读取Sim卡信息<BR>
09. * PS: 必须在加入各种权限 <BR>
10. * Date:2012-3-12<BR>
11. *
12. * @version 1.00
13. * @author CODYY)peijiangping
14. */
15.public class SIMCardInfo {
16.    /**
17.     * TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息。
18.     * 应用程序也可以注册一个监听器到电话收状态的变化。不需要直接实例化这个类
19.     * 使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。
20.     */
21.    private TelephonyManager telephonyManager;
22.    /**
23.     * 国际移动用户识别码
24.     */
25.    private String IMSI;
26.
27.    public SIMCardInfo(Context context) {
28.        telephonyManager = (TelephonyManager) context
29.                .getSystemService(Context.TELEPHONY_SERVICE);
30.    }
31.
32.    /**
33.     * Role:获取当前设置的电话号码
34.     * <BR>Date:2012-3-12
35.     * <BR>@author CODYY)peijiangping
36.     */
37.    public String getNativePhoneNumber() {
38.        String NativePhoneNumber=null;
39.        NativePhoneNumber=telephonyManager.getLine1Number();
40.        return NativePhoneNumber;
41.    }
42.
43.    /**
44.     * Role:Telecom service providers获取手机服务商信息 <BR>
45.     * 需要加入权限<uses-permission
46.     * android:name="android.permission.READ_PHONE_STATE"/> <BR>
47.     * Date:2012-3-12 <BR>
48.     *
49.     * @author CODYY)peijiangping
50.     */
51.    public String getProvidersName() {
52.        String ProvidersName = null;
53.        // 返回唯一的用户ID;就是这张卡的编号神马的
54.        IMSI = telephonyManager.getSubscriberId();
55.        // IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。
56.        System.out.println(IMSI);
57.        if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
58.            ProvidersName = "中国移动";
59.        } else if (IMSI.startsWith("46001")) {
60.            ProvidersName = "中国联通";
61.        } else if (IMSI.startsWith("46003")) {
62.            ProvidersName = "中国电信";
63.        }
64.        return ProvidersName;
65.    }
66.}
package com.pei.activity;import android.content.Context;
import android.telephony.TelephonyManager;/*** class name:SIMCardInfo<BR>* class description:读取Sim卡信息<BR>* PS: 必须在加入各种权限 <BR>* Date:2012-3-12<BR>* * @version 1.00* @author CODYY)peijiangping*/
public class SIMCardInfo {/*** TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息。* 应用程序也可以注册一个监听器到电话收状态的变化。不需要直接实例化这个类* 使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。*/private TelephonyManager telephonyManager;/*** 国际移动用户识别码*/private String IMSI;public SIMCardInfo(Context context) {telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);}/*** Role:获取当前设置的电话号码* <BR>Date:2012-3-12* <BR>@author CODYY)peijiangping*/public String getNativePhoneNumber() {String NativePhoneNumber=null;NativePhoneNumber=telephonyManager.getLine1Number();return NativePhoneNumber;}/*** Role:Telecom service providers获取手机服务商信息 <BR>* 需要加入权限<uses-permission* android:name="android.permission.READ_PHONE_STATE"/> <BR>* Date:2012-3-12 <BR>* * @author CODYY)peijiangping*/public String getProvidersName() {String ProvidersName = null;// 返回唯一的用户ID;就是这张卡的编号神马的IMSI = telephonyManager.getSubscriberId();// IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。System.out.println(IMSI);if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {ProvidersName = "中国移动";} else if (IMSI.startsWith("46001")) {ProvidersName = "中国联通";} else if (IMSI.startsWith("46003")) {ProvidersName = "中国电信";}return ProvidersName;}
}[html] view plaincopyprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03.    android:layout_width="fill_parent"
04.    android:layout_height="fill_parent"
05.    android:orientation="vertical" android:gravity="center">
06.
07.    <TextView
08.        android:id="@+id/textView1"
09.        android:layout_width="wrap_content"
10.        android:layout_height="wrap_content"
11.        android:text="TextView" />
12.
13.    <TextView
14.        android:id="@+id/textView2"
15.        android:layout_width="wrap_content"
16.        android:layout_height="wrap_content"
17.        android:text="TextView" />
18.
19.    <Button
20.        android:id="@+id/getSIMInfo"
21.        android:layout_width="wrap_content"
22.        android:layout_height="wrap_content"
23.        android:text="获取手机号码等信息" />
24.
25.</LinearLayout>  

Android 获取手机号及运营商信息相关推荐

  1. Unity获取安卓手机运营商信息

    Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用 一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了 ...

  2. PHP--根据手机号-淘宝平台获取归属地运营商信息

    //获取手机账号信息public function get_mobile_area($mobile){$sms = array('province'=>'', 'supplier'=>'' ...

  3. Android获取本机电话号码及运营商信息

    电话管理器TelephonyManager可访问电话服务信息,包括电话号码.运营商信息.wifi状态等.一些电话信息需要相应的权限,具体可以看API文件中TelephonyManager方法的说明. ...

  4. android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...

  5. 根据手机sim卡获取运营商信息

    有的时候我们去获取手机运营商,显示给用户是移动,联通还是电信.android提供这套接口,可以拿到它. 1 核心代码,拿到电话管理者对象,从中去获取用户id,根据id的开头曲区分运营商信息 publi ...

  6. iphone 获取手机运营商信息

    获取手机运营商信息是通过获取imsi来判断的,它是有一个自己的标准和规则的,下面先介绍一下imsi: IMSI: 国际移动用户识别码(IMSI:International Mobile Subscri ...

  7. iOS获取设备型号,运营商,网络信息

    在 iOS开发中会经常遇到需要获取设备型号,运营商,网络信息来了解和分析用户信息及使用终端情况. 但是 iOS是不能直接获取设备型号的,需要调用C语言的API, 今天给大家带来目前所有苹果设备的型号获 ...

  8. [置顶] Android代码----android获取3G或wifi流量信息

    android获取3G或wifi流量信息: IBatteryStats battryStats = IBatteryStats.Stub.asInterface(ServiceManager.getS ...

  9. java 判断手机运营商_JS正则表达式判断手机号所属运营商

    根据用户的输入手机号码判断该号的运营商是移动.联通.电信或其他,再根据不同的运营商做出相应的处理,下面介绍js中如何判断手机号的运营商的代码电话号码是电话管理部门为电话机设定的号码.一般7--8位数组 ...

最新文章

  1. 详解zabbix安装部署(Server端篇)
  2. android组件通讯 Intent- 系统标准的Activity Action应用
  3. 重新认识错过(通向财富自由之路学习笔记十四)
  4. Date 和 SimpleDateFormat 类表示时间
  5. git 短写设置_如何在短短几分钟内设置一个Git客户端
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]50.什么是BLS基于对的签名方案?
  7. 19.CSS background
  8. MySQL数据库安装、初始化及修改密码
  9. oracle+suspend+参数,oracle数据库的挂起(Suspending)和恢复(Resuming)
  10. android换肤的实现方案,Android 换肤的思路
  11. Windows XP 共享 Workgroup无法访问.您可能没有权限使用网络资源
  12. oracle中如何查看日志,ORACLE报警日志如何查看
  13. jsp是在html里面嵌入哪种代码?_是否要从单片机转嵌入式Linux?
  14. 在前端实现excel导入,在线编辑,导出,打印等功能
  15. Java面试题大全带答案110道(持续更新)
  16. 关于Navicat 连接 RDS数据库
  17. 名词从句、定语从句、状语从句的位置及图示
  18. 智能组卷、专项针对性练习,提高刷题效果!
  19. SQL语句操作练习(一)
  20. javascript contains方法

热门文章

  1. 这不是我想要的Serverless
  2. 《Python Cookbook(第3版)中文版》——1.5 实现优先级队列
  3. HTML/HTML5/CSS/CSS3教程速查手册地址以及如何快速直到webkit的用法
  4. django 创建项目
  5. Linux 配置LNMP服务器 并配置虚拟主机
  6. CAP原理和最终一致性(Eventually Consistency)
  7. 如今黑帽查找引擎优化的难点
  8. JavaScript中的私有函数;Javascript构造函数的私有方法中访问其属性和公有方法
  9. Seam 的一些必备知识
  10. Git 二分调试法,火速定位疑难Bug!