Ich versuche, die mcc
und mnc
nach einem SIM LOADED
Zustand, um zu überprüfen, ob die SIM-Karte wechseln zu bekommen hat, ohne READ PHONE STATE
Berechtigungen, um die App-Anfragen für einige Netzwerke und in einigen Ländern zu deaktivieren dass der Benutzer nicht will.Android MCC und MNC
Da sich getSimOperator()
je nach aktuellem Netzbetreiber ändern kann (z. B. wenn der Benutzer im Roaming ist oder nicht), habe ich mich entschieden, getNetworkOperator()
zu verwenden.
Obwohl diese Methode null
auch dann zurückgeben kann, wenn die SIM
LOADED
ist und unterschiedliche Ergebnisse z. Eine Lycamobile-Karte mit nur GSM-Verbindung gibt mir mnc = 01
und wenn ich die SIM-Karte herausnehme und wieder einlege, bekomme ich mnc = 04
.
Weiß jemand, warum die Mnc unterschiedliche Ergebnisse für die getNetworkOperator()
gibt? Welche Methode ist besser, getNetworkOperator()
oder getSimOperator()
für diesen Fall?
Auch kann ich getResources().getConfiguration().mcc
nicht verwenden, weil es eine int-Nummer gibt, die die 0
vor z. gibt 4
anstelle von 04
.
Dies ist mein Code, um eine SIM-Statusänderung zu überprüfen:
@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: die SIM-Karte, die ich nur GSM-Verbindung bin hat. Auch habe ich versucht mit einer anderen Karte (mit 4g Fähigkeiten) und alles funktioniert wie erwartet mnc
ist das gleiche 01
für eine Vodafone-Karte.
Ich glaube, Sie haben dies: 'Da getSimOperator() entsprechend den aktuellen Träger ändern kann (beispielsweise wenn der Benutzer über das Roaming oder nicht ist) ich das getNetworkOperator verwenden entschieden()' rückwärts.. getSimOperator sollte sich mit der SIM ändern - aber nicht beim Roaming usw. – alzee
ich dachte es wäre genau andersherum, gehe auf den Emulator testen und ich werde dann zu dir zurückkommen, danke;) – iGoDa
Danke, es war was du sagten, getSimOperator() kommt von der Simcard – iGoDa