android mcc mnc,android

我试图在SIM LOADED状态之后获取mcc和mnc ,以便检查SIM卡是否在没有READ PHONE STATE权限的情况下进行更改,以便禁用某些网络的应用程序请求以及用户执行某些网络的应用程序请求不想。

由于getSimOperator()可能会根据当前运营商进行更改(例如,当用户正在漫游时),我决定使用getNetworkOperator() 。

虽然这种方法可以返回null ,即使SIM是LOADED ,可能会返回不同的结果,如莱卡移动通讯卡仅限GSM连接是给我mnc = 01 ,当我把SIM卡取出,并把它再次它给了我mnc = 04 。

有人知道为什么mnc为getNetworkOperator()提供不同的结果吗? 对于这种情况,哪种方法更好, getNetworkOperator()或getSimOperator() ?

另外,我不能使用getResources().getConfiguration().mcc因为它给出一个int数,可能会删除0之前,例如给出4而不是04 。

这是我检查SIM状态更改的代码:

@Override

public void onReceive(final Context context, Intent intent) {

if (intent != null) {

Bundle extras = intent.getExtras();

if (extras != null) {

String ss = extras.getString(EXTRAS_SIM_STATUS);

if (ss != null && (ss.equals("LOADED"))) {

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

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissions(READ_PHONE_STATE)) {

//here I get the imsi

}else{

L.d("NetworkOperator result %s", telephonyManager.getNetworkOperator());

//saving in shared preferences in order to check if the sim is allowed or not

//this is also called on application onCreate() so I can check the current SIM

}

}

}

}

}

PS:我使用的SIM卡只有GSM连接。 此外,我尝试使用另一张卡(具有4g功能),一切正常, mnc与沃达丰卡的01相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值