ausgeschaltet ist Ich erstellte eine BroadcastReceiver
, die für ein CONNECTIVITY_CHANGE
Ereignis abhört. Für jetzt, drucke ich einfach die Aktion der Intent
, die die BroadcastReceiver
und ihre Extras nennt. Ich benutze ein Testtelefon in unserem Büro hier in Manila und die SIM-Karte kommt aus Dänemark. Wenn onReceive()
aufgerufen wird, ist das, was in LogCat ausgedruckt wird:Erkennen, wenn Roaming in Android
action: android.net.conn.CONNECTIVITY_CHANGE
key: extraInfo, value: data.tre.dk
key: htcCurrentActiveNetwork, value: null
key: networkInfo, value: null
key: reason, value: roamingOn
key: noConnectivity, value: null
key: inetCondition, value: null
Ich muss wissen, was der Wert von reason
ist, wenn das Roaming losgeht - roamingOff
durch Erraten sein könnte, aber ich kann nicht wissen, sicher, außer ich gehe nach Dänemark. Dies liegt daran, dass ich eine Aufgabe ausführen muss, wenn der Roaming-Dienst ausgeschaltet wird, und ich habe von LogCat festgestellt, dass das Ereignis CONNECTIVITY_CHANGE
aus anderen Gründen ausgelöst wird als durch Umschalten der Roaming-Modi. Oder gibt es eine bessere Möglichkeit zu erkennen, wenn Roaming ausgeschaltet ist?
-Code für den Rundfunkempfänger:
public void onReceive(Context context, Intent intent) {
Log.d(This.LOGTAG, "action: " + intent.getAction());
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.d(This.LOGTAG, "key: " + key + ", value: " + extras.getString(key));
}
}
Manifest Eintrag: Diese
Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING)
:
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Ich habe gerade das Ergebnis dieser Zeile zusammen mit dem Ergebnis von 'TelephonyManager.isNetworkRoaming()' protokolliert.Ich habe herausgefunden, dass 'Settings.Secure.DATA_ROAMING' eine '0' zurückgeben kann (was bedeutet, dass das Daten-Roaming ausgeschaltet ist), während' isNetworkRoaming() ''wahr' ist. Ich nehme an, das liegt daran, dass sich die Telekommunikationsgesellschaft immer noch im Netzwerk-Roaming-Modus befindet, aber ich erlaube meinem Gerät nicht, mobiles Internet zu nutzen. Sie scheinen verschiedene Switches zu sein, und ich bin nach dem Netzwerk-Roaming-Modus. –
Und was willst du wissen? Ich nehme an, dass 'TelephonyManager.isNetworkRoaming()' zeigt, dass Sie sich im Roaming befinden, und zeigt an, ob Sie das Internet im Roaming verwenden können – Jin35
Ich bin nach dem Netzwerk-Roaming-Modus, weil ich versuche, die nächste monatliche Rechnung des Benutzers zu messen-- und das schließt nicht nur die Menge der über Daten-Roaming gesendeten/empfangenen mobilen Daten ein. –