У меня странная проблема. У меня очень простой кусок кода, который предназначен для запуска всякий раз, когда кто-то подключается к точке доступа Wi-Fi.Нажатие кнопки «Назад» или «Дом» вызывает изменение связи?
IntentFilter ConnectedFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
getApplicationContext().registerReceiver(ConnectedToAPReceiver, ConnectedFilter);
private BroadcastReceiver ConnectedToAPReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
{
ConnectivityManager connManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo Wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (Wifi.isConnected())
{
// If we get here, it means that the user has just connected to wifi.
}
}
}
};
Этот код очень хорошо работает для того, что мне нужно. Однако я получаю странное явление, когда нажата кнопка «Назад» или «Дом», также запускается широковещательный приемник. Кроме того, загрузка приложения также запускает это приложение.
Кто-нибудь знает, почему нажатие этих кнопок будет отображаться Android как вызывающее изменение связи? И есть ли у кого-нибудь идеи, как легко различать эти нажатия кнопок и действительное изменение связи.
Это часть решения благодаря некоторой работе.
Во-первых, у меня есть два класса, класс активности и класс обслуживания. В моем классе активности я устанавливаю переменную в классе службы с использованием широковещательного приемника при вызове onPause и onDestroy. (Они срабатывают, когда пользователь нажимает эти кнопки). Получатель в классе обслуживания выбирает это намерение и устанавливает переменную public.
Затем в классах activity onResume я проверяю эту переменную и посылаю другое намерение службе, чтобы сбросить переменную до состояния по умолчанию. Здесь я также устанавливаю локальный флаг. Когда я делаю какую-либо обработку, я просто заранее проверяю этот флаг и обрабатываю его соответствующим образом.
Очень правильный комментарий. Я понял это и добавил дополнительную проверку. Если кому-то это интересно, я редактировал свой вопрос, чтобы описать, как я его решил. – Dave