android 获取sim卡运营商信息 .

本文介绍了在Android中如何通过TelephonyManager获取SIM卡的运营商信息,包括使用getSimOperatorName()和getSubscriberId()方法判断中国移动、联通、电信,并在AndroidManifest.xml中添加必要的权限。

TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager 的使用 TelephonyManager 提供设备上获取通讯服务信息的入口,应用程序使用这个类的方法来获取电话的服务商或者状态。程序也可以注册一个监听器来监听电话状态的改变。不需要直接实例化这个类,使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。

注意:一些电话信息需要相应的权限。方法无效

getSimOperatorName() Returns the Service Provider Name (SPN). // 获取服务提供商名字,比如电信,联通,移动用下面的方法第一种方法: 获取手机的IMSI码,并判断是中国移动/中国联通/中国电信

TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

 

 

 

String imsi = telManager.getSubscriberId();

if(imsi!=null){ if(imsi.startsWith(“46000″) || imsi.startsWith(“46002″))

{//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号 //中国移动

}else if(imsi.startsWith(“46001″)){

//中国联通

}else if(imsi.startsWith(“46003″)){

//中国电信

} }

 

 

第二种方法 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String operator = telManager.getSimOperator();

if(operator!=null){ if(operator.equals(“46000″) || operator.equals(“46002″)|| operator.equals(“46007″)){

//中国移动

}else if(operator.equals(“46001″)){

//中国联通

}else if(operator.equals(“46003″)){

//中国电信

} }

在文件AndroidManifest.xml中添加权限其他方法具体使用方法请查看API 文档TelephonyManager中方法说明。

在文件 AndroidManifest.xml 中添加权限 <uses-permission android:name= "android.permission.READ_PHONE_STATE"/>


 

TelephonyManager tel = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE);

String simOperator = tel.getSimOperator();

IMSI共有15位,其结构如下: MCC+MNC+MIN MCC:Mobile Country Code,移动国家码,共3位,中国为460; MNC:Mobile Network Code,移动网络码,共2位,电信03,移动02,联通GSM 01,一个典型的IMSI号码为460030912121001; MIN共有10位,其结构如下: 09+M0M1M2M3+ABCD 其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别.

功能 说明

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

**正确答案:B. size()** ### 解释: 在 Java 中,`Collection` 接口是集合体系的根接口之一(位于 `java.util.Collection`),它定义了所有集合类(如 `List`、`Set`、`Queue` 等)共有的基本操作方法。其中,获取集合中元素个数(即“长度”)的方法是 **`size()`**。 #### 选项分析: - **A. length()** ❌ `length()` 不是 Collection 接口的方法。`length` 是数组的一个属性,用于获取数组的长度,例如:`array.length`。但集合对象不是数组,不能使用 `length` 或 `length()`。 - **B. size()** ✅ 正确。这是 `Collection` 接口中定义的标准方法,用于返回当前集合中元素的数量(返回类型为 `int`)。所有实现 `Collection` 接口的类(如 `ArrayList`、`HashSet`、`LinkedList` 等)都必须实现此方法。 - **C. add()** ❌ `add(E e)` 方法用于向集合中添加元素,返回是否添加成功(布尔值),与获取长度无关。 - **D. iterator()** ❌ `iterator()` 方法用于获取一个迭代器对象,以便遍历集合中的元素,不用于获取长度。 #### 示例代码: ```java import java.util.*; public class CollectionSizeExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); Set<Integer> set = new HashSet<>(); set.add(1); set.add(2); set.add(3); set.add(2); // 重复元素不会被加入 System.out.println("List 的大小: " + list.size()); // 输出: 3 System.out.println("Set 的大小: " + set.size()); // 输出: 3 } } ``` **输出结果:** ``` List 的大小: 3 Set 的大小: 3 ``` #### 补充说明: - 数组使用 `.length` 属性获取长度。 - 字符串使用 `.length()` 方法获取字符数。 - 集合(Collection)统一使用 `.size()` 方法获取元素个数。 这是 Java 集合框架设计的一致性体现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值