手机号码不是全部的都能获取。仅仅是有一部分能够拿到。

这个是因为移动运营商没有把手机号码的数据写入到sim卡中.SIM卡仅仅有唯一的编号。供网络与设备 识别那就是IMSI号码,手机的信号也能够说是通过这个号码在网络中传递的,并非手机号码。

试想。你的SIM丢失后,补办一张新的会换号码吗?

是不会 的.就是由于在你的手机号码相应的IMSI号 在移动运营商中被改动成新SIM卡的IMSI号码。

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

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

国内sim卡存的是imsi号,没有电话号码存在机器上。仅仅有当你和基站发生联系后。由运营商给你分配号码。

可是我也写了一个类实现获取运营商

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" > <TextView
android:id="@+id/tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/tv_privoid"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <Button
android:id="@+id/getSIMInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="获取手机号码等信息" >
</Button> </LinearLayout>

SIMCardInfo.java:

/**
* @author yazhizhao
* 20142014-10-22上午9:13:04
*/
package com.example.android_sms; import android.content.Context;
import android.telephony.TelephonyManager;
import android.util.Log; /**
* @author yazhizhao 20142014-10-22上午9:13:04
*/
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);
} /**
* 获取当前设置的电话号码
*
* @author yazhizhao 20142014-10-22上午9:44:19
* @return
*/
public String getNativePhoneNumber() {
String NativePhoneNumber = null;
NativePhoneNumber = telephonyManager.getLine1Number();
return NativePhoneNumber;
} /**
* 获取手机服务商信息 须要增加权限<uses-permission
* android:name="android.permission.READ_PHONE_STATE"/>
*
* @author yazhizhao 20142014-10-22上午9:44:31
* @return
*/
public String getProvidersName() {
String ProvidersName = null;
// 返回唯一的用户ID;就是这张卡的编号神马的
IMSI = telephonyManager.getSubscriberId();
// IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动。01是中国联通,03是中国电信。
Log.i("MainActivity", "IMSI" + IMSI);
if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
ProvidersName = "中国移动";
} else if (IMSI.startsWith("46001")) {
ProvidersName = "中国联通";
} else if (IMSI.startsWith("46003")) {
ProvidersName = "中国电信";
}
return ProvidersName;
}
}

MainActivity.java

package com.example.android_sms;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView; /**
* 注意权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
*
* @author yazhizhao 20142014-10-22上午9:18:04
*/
public class MainActivity extends Activity {
private TextView number;
private TextView privoid;
private String TAG = "MainActivity"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = (TextView) this.findViewById(R.id.tv_num);
privoid = (TextView) this.findViewById(R.id.tv_privoid);
} public void click(View v) { SIMCardInfo siminfo = new SIMCardInfo(MainActivity.this);
Log.i(TAG, "运营商" + siminfo.getProvidersName());
Log.i(TAG, "电话" + siminfo.getNativePhoneNumber());
number.setText(siminfo.getNativePhoneNumber());
privoid.setText(siminfo.getProvidersName()); } }

执行效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

赵雅智_android获取本机运营商,手机号部分能获取的更多相关文章

  1. 赵雅智_android多线程下载带进度条

    progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度. 一个进度条也可不确定其进度.在不确定模式下, ...

  2. 赵雅智_Android的getResources()资源引用

    今天做一个Android的刮刮乐项目.里面用到非常多的地方用到了getResources. <span style="font-size:12px;"> // 获得图片 ...

  3. 赵雅智_Android编码规范

    凝视 导入mycodetemplates.xml统一凝视样式 须要加凝视的地方 类凝视(必加) 方法凝视(必加) 块凝视主要是数据结构和算法的描写叙述(必加) 类成员变量和常量凝视(选择性加入) 单行 ...

  4. 赵雅智_Android案例_刮刮乐

    实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  5. MTK Android 读取SIM卡参数,获取sim卡运营商信息

    android 获取sim卡运营商信息(转)   TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TE ...

  6. 获取客户机MAC地址 根据IP地址 获取机器的MAC地址 / 获取真实Ip地址

    [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref ...

  7. 赵雅智_BroadcastReceiver短信监听

    AndroidManifest.xml 注冊广播接收者 加入权限 <?xml version="1.0" encoding="utf-8"?> &l ...

  8. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用

    一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...

  9. 使用 CoreTelephony 框架获取当前网络运营商

    CoreTelephony 获取运营商信息,需通过 CoreTelephony.Framework 中的 CTTelephonyNetworkInfo 和 CTCarrier 对象获取,这些都在iOS ...

随机推荐

  1. DDL:对数据库___database___的相关操作,包含数据库备份,导入

    1.创建数据库 create database mydb2; create database mydb2 character set utf8; 2.删除数据库 drop database mydb2 ...

  2. 找不到dll原因

    1.没有生成成功: A.代码有错误 B.引用dll有问题(dll生成失败|dll版本不对) C.源文件损坏 2.dll生成路径不对 3.对dll的引用丢失

  3. Linux下实现视频读取

    V4L(video4linux是一些视频系统,视频软件.音频软件的基础,经常时候在需要采集图像的场合,如视频监控,webcam,可视电话,经常使用在embedded linux中是linux嵌入式开发 ...

  4. 原生js实现简单JSONP

    JSONP是一种非常常见的实现跨域请求的方法.其基本思想是利用浏览器中可以跨域请求外链的JS文件,利用这一特性实现数据传输. 用原生JS实现JSONP非常简单,无非几点: 1)定义一个函数,用于处理接 ...

  5. DevExpress 如何读取当前目录下文件,加载至grid

    DBFileName=DevExpress.Utils.FileHelper.FindingFileName(Appliaction.StartupPath,"Data\\Product&g ...

  6. 页面footer在底部

    页脚动态贴在底部需要满足以下两个条件: 当主体的内容高度不超过可视区域高度的时候,页脚贴在页面底部. 当主体的内容高度超过可视区域高度的时候,页脚将按正常布局. 方法一:footer高度固定+绝对定位 ...

  7. (转)RabbitMQ学习之主题topic(java)

    http://blog.csdn.net/zhu_tianwei/article/details/40887775 参考:http://blog.csdn.NET/lmj623565791/artic ...

  8. MongoDB_聚合

    MongoDB提供以下聚合工具来对数据进行操作:聚合框架.MapReduce以及几个简单聚合命令:count.distinct.group 聚合框架:可以使用多个构件创建一个管道,上一个构件的结果传给 ...

  9. Git 本地项目添加多个远程仓库

    做了一个小玩意儿,是在 码云 上做的仓储: 还想同时放在 github 上做个备份: 就在 github 上创建了一个新的项目地址: 可以看出,官方给了三种导入方式: 1.创建一个新的项目: 2.推送 ...

  10. 浅谈[^>]在正则中的2种用法

    /^A/会匹配"An e"中的A,但是不会匹配"ab A"中的A,此时^A的意思是“匹配开头的A” /[^a-z\s]/会匹配"my 3 sister ...