导航:首页 > 操作系统 > android获取手机imsi

android获取手机imsi

发布时间:2022-07-16 08:04:25

1. android怎么获得双卡imsi和imei

getSimSerialNumber()是获取IMEI的
getSubscriberId()才是获取IMSI的

MTK的是getSubscriberIdGemini(int simId)
对应的getSimSerialNumberGemini(int simId)

高通平台有单独的类MSimTelephonyManager里面有方法
getSubscriberId(int simId)
getSimSerialNumber(int simId)
高通平台接口不太确定各个厂商是否都是这样.据说之前高通双卡方案代码是外包的,可能不太一样.

simId 0应该是主卡 1是次卡

要用反射掉,不是原生接口

2. android如何获得手机通讯录中好友或者指定手机号码的IMSI码

一般看前面三位数字(号段)就可以进行区分了。不过一些携号转网的用户除外。
移动号码段有:139、138、137、136、135 、134、188、187、182、159、158、157 、152 、150
电信:133、153、180、189、181
联通:130 、131、132、155、156、186、185、145
以上信息仅供参考,以实际使用情况为准。

获取手机全部联系人 , 没找到插入代码格式,将就看看把

private void getContact(int index) {
List<List<String>> list=new ArrayList<List<String>>();
List<String> list2;
//获得所有的联系人
Cursor cur = getActivity().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//循环遍历
if (cur.moveToFirst()) {
int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);

int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
//获得联系人的ID号
String contactId = cur.getString(idColumn);
//获得联系人姓名
String disPlayName = cur.getString(displayNameColumn);
list2=new ArrayList<String>();
list2.add(disPlayName);
//查看该联系人有多少个电话号码。如果没有返回值为0
int phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if(phoneCount>0){
//获得联系人的电话号码
Cursor phones = getActivity().getContentResolver()
.query(ContactsContract.CommonDataKinds.
Phone.CONTENT_URI,null,ContactsContract
.CommonDataKinds.Phone.CONTACT_ID+ " = " +
contactId, null, null);

int i=0;
String phoneNumber;
if(phones.moveToFirst()){
do{
i++;
phoneNumber= phones.getString
(phones.getColumnIndex(ContactsContract
.CommonDataKinds.Phone.NUMBER));
if(i==1){
list2.add(phoneNumber);
list.add(list2);
}
}while(phones.moveToNext());
}
}
} while (cur.moveToNext());

}

3. android手机导致获取不到mac地址,imei,imsi的因素有哪些

UICC初始化失败。是其中之一。第二权限问题。UICC初始化属于底层的一些东西,一本书不一定说的明白,大致就是这样一个过程,你调用一些封装好的API调用通信框架的函数,调用RIL操作调制解调器。如果这中间任何一个环节不通畅,都会导致获取不到结果。一个手机开机,都必须初始化调制解调器和UICC。所以我说初始化失败也是原因之一。

4. 如何在Android开发中获取SIM卡信息

android 获取sim卡运营商信息
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);

/** 获取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.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

阅读全文

与android获取手机imsi相关的资料

热点内容
服务器和接口地址ping不通 浏览:555
linux命令返回上级目录 浏览:897
移动花卡宝藏版为什么不能选免流app 浏览:255
速腾carplay怎么用安卓 浏览:13
红塔银行app怎么样 浏览:564
农行app怎么开网银 浏览:651
java迭代器遍历 浏览:303
闽政通无法请求服务器是什么 浏览:48
怎么做积木解压神器 浏览:205
王者荣耀解压玩具抽奖 浏览:49
12位是由啥加密的 浏览:870
程序员编迷你世界代码 浏览:897
php取现在时间 浏览:248
单片机高吸收 浏览:429
怎么区分五代头是不是加密喷头 浏览:246
hunt测试服务器是什么意思 浏览:510
2013程序员考试 浏览:641
毕业论文是pdf 浏览:736
服务器跑网心云划算吗 浏览:471
单片机定时器计数初值的计算公式 浏览:801