
1 存储在SIM卡中的mcc/mnc
这个值是存储在SIM卡IMSI(国际移动用户识别码 International Mobile Subscriber Identification Number)中的固定值,不会被更改。有以下两种途径可以取得。
11 通过TelephonyManager获得
在TelephonyManager中有如下方法:
//TelephonyManagerjava
/
Returns the MCC+MNC (mobile country code + mobile network code) of the
provider of the SIM for a particular subscription 5 or 6 decimal digits
Availability: SIM state must be {@link #SIM_STATE_READY}
@see #getSimState
@param subId for which SimOperator is returned
@hide
/
public String getSimOperatorNumeric(int subId) {
int phoneId = SubscriptionManagergetPhoneId(subId);
return getSimOperatorNumericForPhone(phoneId);
}
/
Returns the MCC+MNC (mobile country code + mobile network code) of the
provider of the SIM for a particular subscription 5 or 6 decimal digits
@param phoneId for which SimOperator is returned
@hide
/
public String getSimOperatorNumericForPhone(int phoneId) {
return getTelephonyProperty(phoneId,
TelephonyPropertiesPROPERTY_ICC_OPERATOR_NUMERIC, "");
}
↓↓↓
由于subId并不固定,是根据放进sim卡槽时候的计数来统计的,但是如果相关类中有SubscriptionInfo对象的话,是可以直接取到的:
int subId = mSubscriptionInfogetSubscriptionId();
另一种phoneId则比较简单了,它与sim卡数量有关,单卡时为0,双卡时根据sim slot位置分别取0和1。
12 通过SubscriptionInfo获得
在有些特殊情况下,比如SIM卡处于PIN码LOCK状态时,11所提到的方法是取不到的,这个时候只能通过SubscriptionInfo来取。
// SubscriptionInfojava
/
@return the MCC
/
public int getMcc() {
return thismMcc;
}
/
@return the MNC
/
public int getMnc() {
return thismMnc;
}
注意,由于这个方法取到的mcc/mnc均为int值,比如中国联通的“46001”,则有mcc为“460”,mnc为“1”,与固定String字符串进行匹配比对的话,需要先将String拆分为两部分后分别强转成int型后才可进行比对。
2 SIM卡注册网络的mcc/mnc
非漫游情况下,注册网络的mcc/mnc就是SIM卡中存储的。但是如果你的SIM卡在其他国家并没有该运营商的基站,只能通过漫游到其他运营商的网络上维持服务时,注册网络的mcc/mnc对应的就是该运营商的值,与SIM卡无关了。
21 通过ServiceState获得
熟悉Android Telephony流程的朋友应该都知道,CS、PS域的注册状态,漫游状态,运营商名字的显示,网络模式等都是用模板类ServiceStatejava来保存的。
SystemUI中有不少类都注册了PhoneStateListener这个callback,用来时刻关注设备的一些telephony相关状态,当网络服务状态有变化时,会回调其onServiceStateChanged(ServiceState serviceState)方法,这样我们就可以直接从ServiceState里面取了。
// ServiceStatejava
/
Get current registered operator numeric id
In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit
network code
@return numeric format of operator, null if unregistered or unknown
/
/
The country code can be decoded using
{@link comandroidinternaltelephonyMccTable#countryCodeForMcc(int)}
/
public String getOperatorNumeric() {
return mVoiceOperatorNumeric;
}
/
Get current registered voice network operator numeric id
@return numeric format of operator, null if unregistered or unknown
@hide
/
public String getVoiceOperatorNumeric() {
return mVoiceOperatorNumeric;
}
/
Get current registered data network operator numeric id
@return numeric format of operator, null if unregistered or unknown
@hide
/
public String getDataOperatorNumeric() {
return mDataOperatorNumeric;
}
一般来说,voice语音业务和data数据业务对应的OperatorNumeric是一样的,所以getOperatorNumeric()默认取了voice的。
22 通过监听Telephony广播获得
由于该Intent action为MTK新增的,故以下方法介绍均以MTK源码为基础。
上面的方法必须在voice与data均注册成功的前提下才能获得,但是在一些很特殊的环境下,比如SIM卡虽然漫游上了某个其他运营商的网络,但由于两家运营商之间并没有协议,导致无法注册上服务,此时voice和data取得的OperatorNumeric均为空的。
在MTK源码中,MtkServiceStateTracker在处理PLMN String即mcc/mnc时,会通过action为“TelephonyIntentsACTION_LOCATED_PLMN_CHANGED”的广播,把它作为extra参数传递出去。
// MtkServiceStateTrackerjava
private void updateLocatedPlmn(String plmn) {
if (((mLocatedPlmn == null) && (plmn != null)) ||
((mLocatedPlmn != null) && (plmn == null)) ||
((mLocatedPlmn != null) && (plmn != null) && !(mLocatedPlmnequals(plmn)))) {
log("updateLocatedPlmn(),previous plmn= " + mLocatedPlmn + " ,update to: " + plmn);
Intent intent = new Intent(TelephonyIntentsACTION_LOCATED_PLMN_CHANGED);
if (TelephonyManagergetDefault()getPhoneCount() == 1) {
intentaddFlags(IntentFLAG_RECEIVER_REPLACE_PENDING);
}
intentputExtra(TelephonyIntentsEXTRA_PLMN, plmn);
mPhonegetContext()sendStickyBroadcastAsUser(intent, UserHandleALL);
}
mLocatedPlmn = plmn;
}
由此可知,只要在需要取的类中,注册一个监听“ACTION_LOCATED_PLMN_CHANGED”的BroadcastReceiver就行了,在设备开机之后便可以第一时间拿到漫游网络的mcc/mnc值,具体如下:
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intentgetAction();
if (actionequals(TelephonyIntentsACTION_LOCATED_PLMN_CHANGED)) {
mLocatedPlmn = intentgetStringExtra(TelephonyIntentsEXTRA_PLMN);
// mLocatedPlmn即为漫游网络的mcc/mnc值,接下来用它 *** 作即可
Android设备不同类型的识别设备ID。·唯一编号(IMEI,MEID,ESN,IMSI)·MAC地址·序列号·ANDROID_ID唯一编号(IMEI,MEID,ESN,IMSI)说明在以前,当Android设备均作为电话使用时,寻找唯一标识号比较简单:()可用于找到(取决于网络技术)手机硬件唯一的IMEI,MEID,ESN和IMSI编号。TelephonyManagergetDeviceIdIMEI,MEID,ESN,IMSI的定义如下:•IMEI(国际移动设备识别码)唯一编号,用于识别GSM,WCDMA手机以及一些卫星电话(移动设备识别码)全球唯一编号,用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号,用于识别CDMA手机(国际移动用户识别码)与所有GSM和UMTS网络手机用户相关联的唯一识别编号如需要检索设备的ID,在项目中要使用以下代码:•MEID•ESN•IMSIimportandroidtelephonyTelephonyManager;importandroidcontentContext;Stringimeistring=null;Stringimsistring=null;{TelephonyManagertelephonyManager;telephonyManager=(TelephonyManager)getSystemService(ContextTELEPHONY_SERVICE);/getDeviceId()functionReturnstheuniquedeviceIDforexample,theIMEIforGSMandtheMEIDorESNforCDMAphones/imeistring=telephonyManagergetDeviceId();/getSubscriberId()functionReturnstheuniquesubscriberID,forexample,theIMSIforaGSMphone/imsistring=telephonyManagergetSubscriberId();}
android 获取sim卡运营商信息
TelephonyManager tm = (TelephonyManager)ContextgetSystemService(ContextTELEPHONY_SERVICE); TelephonyManager 的使用 TelephonyManager 提供设备上获取通讯服务信息的入口,应用程序使用这个类的方法来获取电话的服务商或者状态。程序也可以注册一个监听器来监听电话状态的改变。 不需要直接实例化这个类,使用ContextgetSystemService(ContextTELEPHONY_SERVICE)来获取这个类的实例。
注意:一些电话信息需要相应的权限。 方法无效
getSimOperatorName() Returns the Service Provider Name (SPN)。 // 获取服务提供商名字,比如电信,联通,移动 用下面的方法 第一种方法: 获取手机的IMSI码,并判断是中国移动/中国联通/中国电信
TelephonyManager telManager = (TelephonyManager) getSystemService(ContextTELEPHONY_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 = telManagergetSubscriberId();
if(imsi!=null){ if(imsistartsWith(“46000″) || imsistartsWith(”46002″))
{//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号 //中国移动
}else if(imsistartsWith(“46001″)){
//中国联通
}else if(imsistartsWith(”46003″)){
//中国电信
} }
第二种方法 TelephonyManager telManager = (TelephonyManager) getSystemService(ContextTELEPHONY_SERVICE); String operator = telManagergetSimOperator();
if(operator!=null){ if(operatorequals(“46000″) || operatorequals(”46002″)|| operatorequals(“46007″)){
//中国移动
}else if(operatorequals(”46001″)){
//中国联通
}else if(operatorequals(“46003″)){
//中国电信
} }
在文件AndroidManifestxml中添加权限 其他方法具体使用方法请查看API 文档TelephonyManager中方法说明。
在文件 AndroidManifestxml 中添加权限 <uses-permission android:name=”androidpermissionREAD_PHONE_STATE“/>
TelephonyManager tel = (TelephonyManager) context getSystemService(ContextTELEPHONY_SERVICE);
String simOperator = telgetSimOperator();
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() 返回网络设备可用的类型。
1IMEI:IMEI码是每个手机的全世界唯一标识。键入“#06#” 即可查得。
2MEID:是全球唯一的56bit移动终端标识号。
3ESN:是鉴别一个物理硬件设备唯一的标识。
4IMSI:MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户
5android_id:android设备的唯一识别码
6device_id: 不同的手机设备返回IMEI,MEID或者ESN码
7sim: 对于CDMA设备,返回的是一个空值
8mac地址: 具有全局唯一性,无法由用户重置,在恢复出厂设置后也不会发生变化
IMEI是一个串号,每个手机出厂都有的。
IMSI确实可以用来识别每一个移动用户,但是IMSI很长,很难记忆,另外,传统电话号码都用0-9的数字来表示,有个用户习惯问题。所以就规定了ISDN号码,即我们现在用的手机号码,通过设定和IMSI号码绑定来识别用户。
ISDN号码完全是规定,因为香港的移动号码和固话是相同的。原来cdma制式的大灵通也采用的是固定电话的编号方式。
其实那都是软件开发者的统计需要,装个看书软件也啥都要查看联系人,查看短信,后台发短信,后台打电话,查看地里位置,有不要嘛当然没有,但是他可以调查我们的爱好,然后后台给我们推软件,当然会跑流量也存在偷窥我们隐私功能,你可以用联想的乐安全和LBE安全大师这俩安全软件可以禁止一切后台启动和限制查看我们的隐私。预防流量丢失和后台开启我们的录音,电话,短信,摄像头功能等。
安卓十大流氓软件是什么?
安卓十大流氓软件:
1窃取隐私 名称:Spyphone
包名:sivartechspyphone
MD5:0e2072b6f84d591ceea529d7535607
行为描述:该软件为间谍软件,警惕该软件窃取用户隐私信息,造成用户隐私泄露。 2 远程控制 名称:铅笔素描
包名:megadroidpicturesketchfree MD5:0496496aa48c3d292a4841891ef8864
行为描述:该软件属于恶意软件,获取手机IMEI、IMSI、SIM卡序列号、设备序号等手机硬件信息,同时该恶意软件具备修改书签地址,修改浏览器主页,访问指定网址等流氓行为。
3 骚扰用户
名称:克里希纳高清动态壁纸 包名:hddevsnewkrishna
MD5:d86c885210eaa86c3fbde5070ffc2816
行为描述:该应用内含推送广告插件,可能会对您产生打扰。您可以用360广告拦截禁止它的通知栏广告,也可以卸载此应用。
4 恶意扣费
名称:云墨书院
包名:cloudebook
MD5:e4c8430c641cfcd4de8226c53b929b90
行为描述:该软件涉嫌存在危险行为代码,警惕该软件会私发短信定制扣费业务,泄露用户隐私。
5 私自安装
名称:特效相机Little
包名:beautifulphotobeta
MD5:ecd19a992b7cd2336710a1c68c87
行为描述:该软件属于恶意软件,私自发送扣费短信并屏蔽指定号码的回馈短信,造成用户无法正常接收运营商的回馈信息,同时该软件私自下载安装指定软件,造成用户手机资费消耗。
6 窃取账户
名称:3D美女壁纸
包名:AVNYlivewallpapermingcheaa MD5:f6c48b6193aea5fb2f617170240ae5d7
行为描述:该证书下签署大量木马软件,警惕该软件私自下载安装软件,造成用户流量等资费消耗。
7 恶意积分墙 名称:阿狸天气
包名:aliandroidWeather
MD5:58b8a37a5aaf11caad7367ee9b0c6d9a
行为描述:该软件使用说明中明确积分去广告,下载指定应用后积分后无法去除广告,恶意积分墙。
8 群发短信 名称:星座神算
包名:newhuaxingzuoshensuan
MD5:5d6fda51e629af2584c57db405610a1a
行为描述:该软件内含恶意广告插件,该插件会伪造短信推送垃圾广告,使得用户频繁接收垃圾短信,同时该插件存在伪造欺诈短信风险。
9 窃取流量
名称:兔子大逃亡 包名:avoidRabbitxln
MD5:61c4cb81e21a70844a1c2fe8cabc6604
行为描述:该软件私自下载安装软件,造成用户流量等资费消耗。
10 山寨知名软件 名称:淘宝客户端
包名:sinosofttaobao
MD5:e4f5d34d9d2be6fb51da8a70f01cfaa5
行为描述:山寨知名淘宝软件,图标模仿非常逼真,用户很难对其进行区分,账号使用有一定的风险。
十大流氓软件是那些呢??序号
软件及网站名称
所属公司
厂商网址
存在问题
举报
人数
1
3721上网助手、地址栏搜索及网络实名
北京三七二一科技有限公司
3721
1、强制安装
2、浏览器劫持(添加用户不需要的按钮、ie地址菜单项中添加非法内容)
3、干扰其他软件运行
4、无法彻底卸载
757
2
淘宝网
阿里巴巴
taobao
强行d出过多广告
148
3
eBay易趣
ebay inc
1、强制安装
2、浏览器劫持(自动在ie中添加按钮和菜单)
3、无法卸载
71
4
dudu下载加速
千橡公司
ddddudu
1、强制安装
2、诱导用户安装广告程序
3、无法彻底删除
42
5
中文上网
中国互联网络信息中心
1、强制安装
2、无法彻底卸载
39
6
青娱乐聊天软件(qyule)
青娱乐 锋力科技 青鸟科联
强制安装
34
7
很棒小秘书
很棒信息服务有限公司
1、强制安装
2、无法彻底卸载
24
8
百度搜霸、
百度超级搜霸
百度
强制安装
12
9
一搜工具条
雅虎
toolbaryisou
强制安装
9
10
网络猪、划词搜索
中搜在线
pigzhongsou
1、强制安装
2、无法彻底卸载
7
十大流氓软件分别是什么?, 谁知道现在十大流氓软件是哪些1、3721 上网助手、地址栏搜索及网络实名
北京三七二一科技有限公司
存在问题:
1 、强制安装
2 、浏览器劫持(添加用户不需要的按钮、 ie 地址菜单项中添加非法内容)
3 、干扰其他软件运行
4 、无法彻底卸载
2、
淘宝网
阿里巴巴
强行d出过多广告
3
eBay 易趣
ebay inc
1 、强制安装
2 、浏览器劫持(自动在 ie 中添加按钮和菜单)
3 、无法卸载
4
dudu 下载加速
千橡公司
1 、强制安装
2 、诱导用户安装广告程序
3 、无法彻底删除
5
中文上网
中国互联网络信息中心
1 、强制安装
2 、无法彻底卸载
6
青娱乐聊天软件
青娱乐锋力科技青鸟科联
强制安装
7
很棒小秘书
很棒信息服务有限公司
1 、强制安装
2 、无法彻底卸载
8
百度搜霸、百度超级搜霸
百度
强制安装
9
一搜工具条
雅虎
强制安装
10
网络猪、划词搜索
中搜在线
1 、强制安装
2 、无法彻底卸载
中国十大流氓软件谁最流氓baidu qq 金山 360 瑞星 没一个好东西 win7 直接裸奔就可以 不装反而没事儿
微软公布中国十大流氓软件按互联网协会之前公布的"流氓软件的八大定义":
强制安装\难以卸载\浏览器劫持\广告d出\恶意收集用户信息\恶意卸载\恶意捆绑\其他侵害用户软件安装、使用和卸载知情权、选择权的恶意行为。
百度搜霸曾经因为别的软件捆绑有过不经用户许可即安装的情况,现在完全没有了,所有的安装都是有提示的而且在控制面板的添加/删除程序中,是可以完全卸载的
因此,应该说完全不属于"恶意软件"了
百度搜霸有很多功能,是可以给用户带来便利的,它还有一些收藏功能,如果使用百度新推出的"搜藏"的话,搜霸用户是可以免登录的方便多了
本人是搜霸FANS,很好用啊,呵呵~
大家投票选出十大流氓软件我的排名(这些我都中过招)
青娱乐
3721
一搜
淘宝网
易趣
网络猪
dudu
博采
十大流氓软件!网秦应该排第一…用软件强行粉碎
UICC初始化失败。是其中之一。第二权限问题。UICC初始化属于底层的一些东西,一本书不一定说的明白,大致就是这样一个过程,你调用一些封装好的API调用通信框架的函数,调用RIL *** 作调制解调器。如果这中间任何一个环节不通畅,都会导致获取不到结果。一个手机开机,都必须初始化调制解调器和UICC。所以我说初始化失败也是原因之一。
以上就是关于安卓双卡双待导致获取不到mcc全部的内容,包括:安卓双卡双待导致获取不到mcc、如何获取GAID,Android ID和IMEI、安卓开发 telmanager.getsubscriberid 获取imsi一定能拿到吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)