Erkennen, wenn das Roaming in Android deaktiviert ist

8

Ich habe ein BroadcastReceiver erstellt, das auf ein CONNECTIVITY_CHANGE -Ereignis wartet. Für den Moment drucke ich einfach die Aktion von Intent aus, die den BroadcastReceiver und seine Extras aufruft. Ich benutze ein Testtelefon in unserem Büro hier in Manila und die SIM-Karte kommt aus Dänemark. Wenn onReceive() aufgerufen wird, wird dies in LogCat ausgedruckt:

%Vor%

Ich muss wissen, was der Wert von reason ist, wenn das Roaming abgeht - könnte roamingOff sein, wenn ich rate, aber ich kann es nicht sicher wissen, es sei denn, 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 als dem Umschalten der Roaming-Modi ausgelöst wird. Oder gibt es eine bessere Möglichkeit zu erkennen, wenn Roaming ausgeschaltet ist?

Code für den Rundfunkempfänger:

%Vor%

Manifesteintrag:

%Vor%     
Matt Quiros 26.09.2012, 06:27
quelle

2 Antworten

1

Es gibt einen Unterschied zwischen Netzwerk-Roaming und Daten-Roaming.

Im Allgemeinen ermöglicht das Netzwerk-Roaming Ihrem Telekommunikationsunternehmen, Satelliten von Drittanbietern zu durchqueren, während Sie sich außerhalb des Landes befinden, damit Sie mit ihren Diensten verbunden bleiben können. Selbst wenn Sie Ihrer Telefongesellschaft bereits mitgeteilt haben, dass Sie sich für das Roaming im Netzwerk anmelden möchten, wird diese Option erst aktiviert, wenn Sie tatsächlich eine Verbindung über Telco-Satelliten von Drittanbietern herstellen. Dies geschieht nur, wenn Sie sich außerhalb des Landes befinden.

>

Beim Daten-Roaming wird es Ihrem Gerät einfach erlaubt / untersagt, mobile Daten zu verbrauchen, während Sie sich im Netzwerk-Roaming-Modus befinden. Es ist mehr geräteabhängig und Sie können es einfach in der App Einstellungen des Telefons ein- oder ausschalten.

Kurz gesagt, wenn Sie das Netzwerk-Roaming erkennen möchten, verwenden Sie TelephonyManager.isNetworkRoaming() . Wenn Sie überprüfen möchten, ob Datenroaming aktiviert oder deaktiviert ist, verwenden Sie Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING) .

WICHTIG: Ich habe die folgenden Szenarien nicht persönlich getestet und bin mir nicht sicher, welchen Wert isNetworkRoaming() zurückgibt.

  1. Sie haben Ihrer Heim-Telefongesellschaft nicht gesagt, dass sie das Netzwerk-Roaming einschalten soll, aber als Sie in einem anderen Land angekommen sind, hat das Telefon begonnen, andere Telekommunikationsnetze zu erkennen.
  2. Nach Szenario 1 müssen Sie auf dem Telefon angeben, mit welchem ​​der erkannten Telco-Netzwerke eine Verbindung hergestellt werden soll. Sie wählen eine und das Telefon versucht eine Verbindung herzustellen. Ich weiß nicht, welchen Wert isNetworkRoaming() hier zurückgeben wird, weil Sie das Netzwerk-Roaming überhaupt nicht abonniert haben.
Matt Quiros 04.10.2012, 05:28
quelle
0

Sie können diese Zeile einfach zum Ermitteln des Roaming-Status verwenden:

%Vor%

Dies erfordert keine speziellen Berechtigungen oder Empfänger.

Quelle

    
Jin35 26.09.2012 06:43
quelle