Android学习笔记 - SIM卡介绍

2019-01-18 18:33

Android学习笔记_SIM卡介绍

一、判断SIM卡属于哪个移动运营商

1、第一种方法:获取手机的IMSI码,并判断是中国移动\\中国联通\\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** 获取SIM卡的IMSI码

* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,

* 储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成,

* 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成, * 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。

* 唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可

*/String imsi = telManager.getSubscriberId(); if(imsi!=null){

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

}else if(imsi.startsWith(\//中国联通

}else if(imsi.startsWith(\//中国电信

} }

2、第二种方法:

TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String operator = telManager.getSimOperator(); if(operator!=null){

if(operator.equals(\//中国移动

}else if(operator.equals(\//中国联通

}else if(operator.equals(\//中国电信 } }

二、从SIM卡中获取联系人信息

1、可以通过内容提供者进行访问,下面是主要代码。 Uri uri = Uri.parse(\String[] projection = {\

Cursor cursor = managedQuery(uri, projection, null, null, \if(cursor!=null){

while(cursor.moveToNext()){

String name = cursor.getString(cursor.getColumnIndex(\

String phone = cursor.getString(cursor.getColumnIndex(\} }

/*在文件AndroidManifest.xml中添加权限

package com.android.internal.telephony; import android.content.ContentProvider; import android.content.UriMatcher; import android.content.ContentValues;

import com.android.internal.database.ArrayListCursor; import android.database.Cursor; import android.net.Uri;

import android.os.SystemProperties; import android.os.RemoteException; import android.os.ServiceManager; import android.text.TextUtils; import android.util.Log; import java.util.ArrayList; import java.util.List;

import com.android.internal.telephony.IccConstants; import com.android.internal.telephony.AdnRecord;

import com.android.internal.telephony.IIccPhoneBook; public class IccProvider extends ContentProvider { private static final String TAG = \private static final boolean DBG = false;

private static final String[] ADDRESS_BOOK_COLUMN_NAMES = new String[] {

\

private static final int ADN = 1; private static final int FDN = 2; private static final int SDN = 3;

private static final String STR_TAG = \private static final String STR_NUMBER = \private static final String STR_PIN2 = \

private static final UriMatcher URL_MATCHER = new UriMatcher( UriMatcher.NO_MATCH); static {

URL_MATCHER.addURI(\URL_MATCHER.addURI(\URL_MATCHER.addURI(\}

private boolean mSimulator; @Override

public boolean onCreate() {

String device = SystemProperties.get(\

if (!TextUtils.isEmpty(device)) { mSimulator = false; } else { // simulator mSimulator = true; }

return true; } @Override

public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) { ArrayList results; if (!mSimulator) {

switch (URL_MATCHER.match(url)) { case ADN:

results = loadFromEf(IccConstants.EF_ADN); break; case FDN:

results = loadFromEf(IccConstants.EF_FDN); break; case SDN:

results = loadFromEf(IccConstants.EF_SDN); break; default:


Android学习笔记 - SIM卡介绍.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:单片机课程设计数字电压表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: