Android трансляции приемников и передачи намерений

1

У меня есть простой широковещательный приемник, настроенный на получение системных намерений, сообщающих мое приложение об изменении состояния сети. Идея состоит в том, чтобы либо показать диалог, сообщающий пользователю, что он покинул сеть WiFI, на которой работает приложение, или вообще потерял соединение.

public class NetworkChangedReceiver extends BroadcastReceiver {

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

    if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){

        boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED,false);
        if(!connected){
            //connection off
            Log.w("Network Changed","SUPPLICATION_CONNECTION_CHANGE_ACTION");



        }
    }else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){

        NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if(info.isConnected()){
            //connection on or WIFI changed
            Log.w("Network Changed","NETWORK_STATE_CHANGED_ACTION");
        }
    }
}

}

Возможно ли, чтобы я даже отображал диалог таким образом? Я не могу узнать, где находится пользователь в приложении, неизвестное состояние при получении трансляции. Мой другой вариант - перевести пользователя обратно в мою активность входа, используя намерение со строкой и логическим дополнительным для тестирования. Это плохая практика программирования для этого?

Теги:
networking

2 ответа

2
Лучший ответ
I have no way of knowing where the user is in the application, 

В этом случае, когда вы получаете широковещательную рассылку, вам следует рассмотреть возможность уведомления в панели уведомлений

Мой другой вариант - перевести пользователя обратно в мою активность входа, используя намерение со строкой и логическим дополнительным для тестирования. Это плохо

Когда Пользователь нажмет на уведомление, вы можете перейти к их активности входа в систему.

0

поместите один и тот же получатель брода в каждом из ваших действий в этом случае, действие которого будет впереди, получит эту трансляцию, а затем вы можете показать диалог, в котором говорится, что соединение потеряно в этом действии и делает все, что вы хотите.

  • 0
    Похоже, классная идея. Знаете ли вы, что произойдет, если приложение не отображается на экране? Я знаю, что измененное намерение сети все еще будет транслироваться, но будет ли мое приложение все еще получать его?
  • 0
    если вы просто включите приемники в свои действия и во время трансляции, если ваше приложение впереди (приложение не отображается), тогда ваше приложение не сможет перехватить эту трансляцию и также не будет производить никаких действий. ошибка ... поэтому, если вы также хотите получать эту трансляцию, когда ваше приложение не видно, вам также следует использовать этот отдельный приемник трансляции, который также будет объявлен в манифесте.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню