2016-05-16 22 views
-2

In meiner Anwendung möchte ich in MainActivity benachrichtigt werden, wenn der Netzwerkstatus sich ändert. Das bedeutet, ich möchte, dass meine App weiß, wann keine WLAN-Verbindung besteht und wann eine WLAN-Verbindung besteht.BroadcastReceiver Implementierung

Dieser Code ist einfach. Ich habe Zweifel bezüglich BroadcastReceiver. Ich habe eine Klasse erstellt, die BroadcastReceiver erweitert. Diese Klasse kann erfolgreich sehen, wann WLAN verfügbar ist und wann nicht.

Meine Frage ist, wie kann ich diese Informationen an die MainActivity übergeben, so dass meine App automatisch ihre Aufnahmen senden kann, wenn Wi-Fi erkannt wird?

Dank

+0

hier meine Antwort Siehe die BroadcastReceiver Mechanismen zu verstehen: http://stackoverflow.com/a/36665760/4706693 – NSimon

+0

Meine Klasse, die sich BroadcastReceiver hat schon ein onReceive, da es sich wie ein "trigger" verhält wenn sich das wifi ändert. Was ich will, ist eine Sendung von diesem onReceive senden. Ich möchte keinen BroadcastReceiver in meiner MainActivity erstellen –

+0

Dann ist es einfacher, Ihren Empfänger in Ihrem Manifest zu deklarieren. Siehe diese Antworten: http://Stackoverflow.com/a/3767766/4706693 und http://Stackoverflow.com/a/8780423/4706693 – NSimon

Antwort

0

Ich wollte kein BroadcastReceiver in meinem MainActivity schaffen, so habe ich eine BroadcastReceiver und einen Intent-Service erstellen, wo ich tun, was ich will.

BroadcastReceiver:

@Override 
public void onReceive(Context context, Intent intent) { 

    ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager.getActiveNetworkInfo(); 
    try{ 
     wifi = mWifi.isConnected(); 
    } 
    catch(Exception e){ 
     Log.d("WifiReceiver", "wifiteste -> No connection"); 
    } 

    if (wifi) { 
     Log.d("WifiReceiver", "wifiteste - Wifi Connected"); 
     Intent background = new Intent(context, BackService.class); 
     background.putExtra("wifi",true); 
     context.startService(background); 
    } 
} 

IntentService:

@Override 
protected void onHandleIntent(Intent intent) { 

    Bundle b = new Bundle(); 
    b = intent.getExtras(); 
    boolean status = b.getBoolean("wifi"); 
    if (!status){ 
     Log.d("BackS", "TESTE ->" + "no wifi"); 

    } 
    else { 
     Log.d("BackS", "wifiteste - wifi available information received"); 
     // Do what you want 
    } 
}