【工具类】获取手机sim卡的运营商

加入权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 1 package com.example.textphone;
 2
 3 import android.content.Context;
 4 import android.telephony.TelephonyManager;
 5
 6 public class SIMCardInfo {
 7     /**
 8      * TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息。
 9      * 应用程序也可以注册一个监听器到电话收状态的变化。不需要直接实例化这个类
10      * 使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。
11      */
12     private TelephonyManager telephonyManager;
13     /**
14      * 国际移动用户识别码
15      */
16     private String IMSI;
17
18     public SIMCardInfo(Context context) {
19         telephonyManager = (TelephonyManager) context
20                 .getSystemService(Context.TELEPHONY_SERVICE);
21     }
22
23     /**
24      * Role:获取当前设置的电话号码 <BR>
25      * Date:2012-3-12 <BR>
26      * 这个目前是得不到的,因为移动策略问题
27      */
28     public String getNativePhoneNumber() {
29         String NativePhoneNumber = "";
30         NativePhoneNumber = telephonyManager.getLine1Number();
31         return NativePhoneNumber;
32     }
33
34     /**
35      * Role:Telecom service providers获取手机服务商信息 <BR>
36      * 需要加入权限<uses-permission
37      * android:name="android.permission.READ_PHONE_STATE"/> <BR>
38      */
39     public String getProvidersName() {
40         String ProvidersName = null;
41         // 返回唯一的用户ID;就是这张卡的编号神马的
42         IMSI = telephonyManager.getSubscriberId();
43         // IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。
44 //        Log.i("tag",IMSI);
45         if(IMSI == null || "".equals(IMSI)){
46             ProvidersName = "获取手机号码失败";
47         }else
48             if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
49             ProvidersName = "中国移动";
50         } else if (IMSI.startsWith("46001")) {
51             ProvidersName = "中国联通";
52         } else if (IMSI.startsWith("46003")) {
53             ProvidersName = "中国电信";
54         }
55         return ProvidersName;
56     }
57
58 }

然后在事件中调用如下:

 1 SIMCardInfo siminfo = new SIMCardInfo(MainActivity.this);
 2 if (v == button_getSIMInfo && siminfo != null) {
 3    Log.i("tag", "~~~~服务商~~~~" + siminfo.getProvidersName());
 4 //  Log.i("tag", "~~~~~号码~~~~~" + siminfo.getNativePhoneNumber());
 5 //  number.setText(siminfo.getNativePhoneNumber());
 6     privoid.setText(siminfo.getProvidersName());
 7 } else {
 8       Toast.makeText(MainActivity.this, "数据获取失败!",               Toast.LENGTH_LONG).show();
 9 }

功能 说明

getCellLocation() 返回的单元格位置的装置 ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION

getDeviceId() 返回的IMEI / MEID的设备。 如果该设备是GSM设备然后IMEI号将被退回,如果该设备是一个CDMA设备然后MEID 将被退回 READ_PHONE_STATE

getLine1Number() 返回设备的电话号码(MSISDN号码) READ_PHONE_STATE

getNetworkOperatorName() 返回注册的网络运营商的名字

getNetworkOperator() 返回的MCC +跨国公司的注册网络运营商

getNetworkCountryIso() 返回注册的网络运营商的国家代码

getSimCountryIso() 返回SIM卡运营商的国家代码 READ_PHONE_STATE

getSimOperator() 返回SIM卡运营商的单个核细胞数+冶 READ_PHONE_STATE

getSimOperatorName() 返回SIM卡运营商的名字 READ_PHONE_STATE

getSimSerialNumber() 返回SIM卡的序列号 READ_PHONE_STATE

getNetworkType() 返回网络设备可用的类型。 这将是下列其中一个值:

TelephonyManager.NETWORK_TYPE_UNKNOWN

TelephonyManager.NETWORK_TYPE_GPRS

TelephonyManager.NETWORK_TYPE_EDGE

TelephonyManager.NETWORK_TYPE_UMTS READ_PHONE_STATE

getPhoneType() 返回设备的类型。

这将是以下值之一:

TelephonyManager.PHONE_TYPE_NONE

TelephonyManager.PHONE_TYPE_GSM

TelephonyManager.PHONE_TYPE_CDMA READ_PHONE_STATE

getSubscriberId() 返回用户识别码(的IMSI)的设备 READ_PHONE_STATE

getNeighboringCellInfo() 返回NeighboringCellInfo类代表名单相邻小区的信息,如果可用,否则将返回null ACCESS_COARSE_UPDATES

时间: 2024-10-12 19:16:09

【工具类】获取手机sim卡的运营商的相关文章

Android开发之获取手机SIM卡信息

TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设备上的电话服务信息. 应用程序能够使用这个类的方法来确定电话服务和状态,以及訪问某些类型的用户信息.应用程序还能够注冊一个侦听器以接收的电话状态变化通知. 你不能直接实例化这个类;相反,你能够通过Context.getSystemService(Context.TELEPHONY_SERVICE)方

Android 获取手机SIM卡运营商

直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context context) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); String operator = null; String IMSI = tm.getSub

Android获取SIM卡的运营商

在Android的主Activity的初始化函数中添加: TelephonyManager tm = (TelephonyManager) this .getSystemService(TELEPHONY_SERVICE); SubscriberId = tm.getSubscriberId(); if (SubscriberId != null && SubscriberId != "null") { if (SubscriberId.startsWith("

获取手机SD卡路径(国产神机多个SD卡)

通过系统的 Environment.getExternalStorageDirectory().getAbsoluteFile(); 只能得到系统的SD卡路径,对于对个SD卡的国产神机,想得到外部SD卡就无能为力了.   下面介绍一个编写的工具类,通过反射得到系统隐藏的得到所有挂载路径方法获取所有SD卡路径: package com.itheima.mobilesafe.utils; import java.lang.reflect.InvocationTargetException; impo

Android实例-手机安全卫士(二十五)-检查手机SIM卡是否变更

一.目标 1.利用广播接收者(手机重启时会发出相应广播)获取开机时的SIM序列号,与已经保存着的比较.根据比较结果完成相应操作. 2.(可选)强制在防盗设置向导第二步中要求绑定SIM卡后才可进行下一步设置. 3.实现从另一个Activity中获取数据,即点击”选择联系人“人后跳至新建的类(选择联系人)中,并从中获取联系人数据. 二.代码实现. 1.在程序包下新建包(取名com.example.mobilesafe.receiver),用于接收广播.在新建包下新建类(取名BootCompleteR

三种尺寸:手机SIM卡使用指南

毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒生了一道工序,就是需要更换Nano-SIM卡,究竟这种SIM卡跟我们以往接触的标准SIM卡和Micro-SIM又有什么区别呢?又有何种渠道才能更换Nano-SIM卡呢? 区分三种SIM卡 在了解SIM卡种类之前,我们先来简单介绍一下SIM卡的功能,众所周知SIM卡就是我们在使用手机时插入的识别卡,S

Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听

在Android 5.0之前,虽然也有手机是双卡手机,但是双卡方案都是ODM厂商自己做的,或者是有芯片厂商提供的源码完成.因此,如果要在4.4甚至更早之前的手机上获取双卡信息,基本上不是一向巨大的工程.虽然之前尝试过使用反射方法去获取 高通的"android.telephony.MSimTelephonyManager"类 MTK的"com.mediatek.common.telephony.ITelephonyEx.aidl"类, 打印出函数的方法和参数以及类属性

Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListener为按钮绑定事件,如下所示: //1.获取控件 btn = (Button)findViewById(R.id.button1); //2.绑定事件 btn.setOnClickListener(new OnClickListener() { @Override public void onCl

java工具类 获取包下所有类

[java] view plaincopy package com.threeti.util; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.uti