2015-04-10 2 views
0

Я создал BroadcastReceiver в своем MainActivity, чтобы поймать системную широковещательную рассылку (подключение к Интернету и результат сканирования Wi-Fi). Передача интернет-соединения поймана, но я столкнулся с проблемой, чтобы поймать трансляцию результата проверки Wi-Fi. ошибка не возникает. Я не знаю, что я должен добавить, чтобы заставить его работать. Я ценю любую помощь.Android: утверждение if из результата проверки wifi не вводится?

MainActivity:

public class MainActivity extends ActionBarActivity { 
 
\t BroadcastReceiverListener receiver; 
 

 
\t @Override 
 
\t protected void onCreate(Bundle savedInstanceState) { 
 
\t \t super.onCreate(savedInstanceState); 
 
\t \t setContentView(R.layout.activity_main); 
 

 
\t \t receiver = new BroadcastReceiverListener(); 
 

 
\t } 
 

 
\t private class BroadcastReceiverListener extends BroadcastReceiver { 
 
\t \t @Override 
 
\t \t public void onReceive(Context context, Intent intent) { 
 
\t \t \t //This if statement is being arrived 
 
\t \t \t if (intent.getAction().equals(
 
\t \t \t \t \t android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { 
 
\t \t \t \t  //This code works without BroadcastReceiver. 
 

 
\t \t \t } 
 

 
\t \t \t else if (intent.getAction().equals(
 
\t \t \t \t \t android.net.ConnectivityManager.CONNECTIVITY_ACTION)) { 
 
\t \t \t \t // I am getting here broadcast for the internet connection 
 

 
\t \t \t } 
 
\t \t } 
 
\t }; 
 

 
\t protected void onResume() { 
 

 
\t \t IntentFilter wifi = new IntentFilter(); 
 
\t \t wifi.addAction(android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
 
\t \t registerReceiver(receiver, wifi); 
 

 
\t \t IntentFilter conn = new IntentFilter(); 
 
\t \t conn.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); 
 
\t \t registerReceiver(receiver, conn); 
 

 
\t \t super.onResume(); 
 
\t } 
 

 
\t @Override 
 
\t protected void onDestroy() { 
 
\t \t unregisterReceiver(receiver); 
 
\t \t super.onDestroy(); 
 
\t } 
 

 
}

ответ

0

Там нет необходимости создавать два IntentFilters, просто создать один и использовать addAction() добавить несколько действий:

IntentFilter wifi = new IntentFilter(); 
wifi.addAction(android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
wifi.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); 
registerReceiver(receiver, wifi); 

Смотрите здесь:

Android - Registering a broadcast receiver for two intents?

Смежные вопросы