0

Я хочу выполнить некоторые действия, когда телефон подключится к определенной сети WiFi. Насколько я могу судить, у меня есть 2 трансляции намерения перехвата, которые удовлетворят это: 1. Состояние Wifi изменено. 2. Изменение связи.Как лучше всего перехватить соединение с Wi-Fi-сетью на Android

Проблема в том, что я хочу перехватить ТОЛЬКО события, связанные с Wifi Connected. В настоящее время мой приемник запускается при любых изменениях в WiFi, включая разъединение, которое мне действительно неинтересно. Я считаю, что это пустая трата времени процессора.

Есть ли более конкретные намерения, такие как «Wifi Connected»? Или, альтернативно, могу ли я добавить что-то к фильтру намерения для достижения этого?

Спасибо!

ответ

0

Насколько я могу сказать, что нет никакого способа, чтобы отфильтровать намерения WifiManager.NETWORK_STATE_CHANGED_ACTION государством (Connected/Disconnected) или по имени сети.

Жаль :(

1

Вы можете определить тип сетевого события, запросив дополнительную информацию. Во-первых, убедитесь, что вы зарегистрировали IntentFilter в действии WifiManager.NETWORK_STATE_CHANGED_ACTION и привяжите его к соответствующему BroadcastReceiver.

Затем в onReceive метод приемника, вы можете проверить, если полученное событие является NetworkInfo.State.CONNECTED событие:

@Override 
public void onReceive(Context context, Intent intent) {  
    NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 

    if (networkInfo != null 
    && networkInfo.getState().equals(NetworkInfo.State.CONNECTED)) { 
    // Do whatever you want 
    } 
} 
+0

Я знаю, что, но это не дает ответа на этот вопрос. Я не хочу, чтобы мой приемник, который будет вызван при каждом изменении в состоянии сети. –

+0

Я не думаю, что это возможно, поскольку вы ограничены тем событием, которое предоставляет Android. Что касается беспроводных функций, вам необходимо знать перед тем, как получить 'EXTRA_NETWORK_INFO', что это« NetworkInfo.State.CONNECTED ». –