2016-03-20 8 views
0

Ich würde gerne wissen, wenn es eine Möglichkeit gibt, zu wissen, wenn der Benutzer die mobilen Daten des Telefons aktiviert oder deaktiviert.Ich bin nicht auf der Suche, ob mein Handy derzeit von Mobile Network verbunden ist . Ich versuche festzustellen, wann der Benutzer den Datenzugriff über das Mobilfunknetz aktiviert/deaktiviert, selbst wenn das WiFi in diesem Moment verbunden ist.Android mobile Daten ein/aus Listener

Die Idee ist zu wissen, ob der Benutzer keine Daten haben wird, sobald er/sie das Haus verlässt.

Ich habe versucht, mit einer Sendung wie folgt aus:

<receiver android:name=".MyReceiver"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 

und es funktioniert. Aber das Problem ist, dass, wenn der Benutzer Daten deaktiviert oder aktiviert, während er mit dem Wifi verbunden ist, es kein Ereignis gibt, so dass das Gerät vom Gerät getrennt wird.

Ich muss dies wissen, weil ich eine elterliche Person darauf hinweisen möchte, dass das Kind das Haus verlassen hat. Ich kann das nur tun, wenn das Gerät mit dem Internet verbunden ist. Also, wenn das WLAN verloren ist, kann ich den Eltern nicht sagen. Die Idee ist, den Eltern zu sagen, dass Mobile Data ausgeschaltet ist, bevor sie das Haus verlassen, während es WLAN gibt.

Antwort

0

Sie können die Broadcast-Receiver in Ihrer Klasse erweitern und dann in der OnReceive Methode:

NetworkInfo networkInfo = conn.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    if(networkInfo!=null && networkInfo.isAvailable()) 
     //do something 
+0

Was onReceive-Methode? Ich bekomme keine, wenn das WLAN verbunden ist. – Ton

+0

Sie können dies in Ihrer Klasse tun, die den BroadcastReceiver und das n erweitert, wenn die if-Bedingungen wahr sind, nennen Sie Ihren Hörer wie diesen listener.isAvailable (true) – Automatik

+0

Aber das Problem ist, wenn WiFi verbunden ist, können Sie auf/Aus Daten einhundert Mal und es wird kein Ereignis im Empfänger sein. – Ton

0

Es kann mit Reflexion erfolgen, wie hier beantwortet How to tell if 'Mobile Network Data' is enabled or disabled (even when connected by WiFi)?

Es wird Ihnen sagen, ob die mobile Daten aktiviert oder deaktiviert.

Wie gesagt, es, es nicht auf Lollipop arbeiten kann +

Sie sich hier über die Lollipop Art und Weise getestet: Android API call to determine user setting "Data Enabled"

Edit: Ein Weg, um zu erreichen, was Ihr suchen manuell den Status überprüfen der mobilen Daten wie oben beschrieben, periodisch z jede Minute oder 10 Sekunden (wenn Sie effektiver sein wollen).

Bearbeiten 2: Sie könnten ContentObserver auch wie hier beschrieben Listener for enable/disable mobile data (not connected or disconnnected) für eine ähnliche "BroadcastReceiver" -Ansatz versuchen.

+0

Danke, aber das ist nicht, was ich suche. Das wird mir sagen, ob Daten aktiviert sind oder nicht, wenn ich darum bitte. Aber ich muss wissen, ob der Benutzer auf das Daten-Ein/Aus-Widget klickt. Ich meine, ich brauche einen Rundfunkempfänger – Ton

+0

Bitte überprüfen Sie meine Bearbeitung, um zu sehen, ob meine Vorgehensweise Ihnen helfen kann zu erreichen, was Sie wollen. – mmcoder10