SIM カードが権限なしで変更されたかどうかを確認し、ユーザーが望まない一部のネットワークおよび一部の国でアプリの要求を無効にするために、状態の後にmcc
andを取得しようとしています。mnc
SIM LOADED
READ PHONE STATE
getSimOperator()
は現在のキャリアによって変わる可能性があるため (ユーザーがローミング中かどうかなど) getNetworkOperator()
、.
このメソッドは、null
たとえGSM のみの接続を備えた lycamobile カードが私に与えているなど、異なる結果を返す可能性SIM
があっても戻ることができますが、SIM カードを取り出して再度挿入すると、それが得られます。LOADED
mnc = 01
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