2016-05-16 5 views
-2

В моем приложении я хочу получать уведомление в MainActivity при изменении состояния сети. Это означает, что я хочу, чтобы мое приложение узнало, когда Wi-Fi соединение отсутствует, и когда есть соединение Wi-Fi.Внедрение BroadcastReceiver

Этот код прост. У меня есть сомнения в отношении BroadcastReceiver. Я создал класс, который расширяет BroadcastReceiver. Этот класс может успешно увидеть, когда есть Wi-Fi, а когда нет.

Мой вопрос в том, как передать эту информацию в MainActivity, чтобы мое приложение могло автоматически отправлять свои записи при обнаружении Wi-Fi?

Благодаря

+0

Смотрите мой ответ здесь, чтобы понять механизмы BroadcastReceiver: http://stackoverflow.com/a/36665760/4706693 – NSimon

+0

Мой класс, который расширяет BroadcastReceiver уже имеет onReceive, потому что он действует как «триггер» при изменении Wi-Fi. То, что я хочу, - это отправить трансляцию с этого момента. Я не хочу создавать BroadcastReceiver в своем MainActivity –

+0

Тогда проще всего объявить ваш приемник в вашем манифесте. Смотрите эти ответы: http://stackoverflow.com/a/3767766/4706693 и http://stackoverflow.com/a/8780423/4706693 – NSimon

ответ

0

Я не хочу, чтобы создать BroadcastReceiver в моем MainActivity, поэтому я создать BroadcastReceiver и Intent службы, где я делать то, что я хочу.

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 
    } 
} 
Смежные вопросы