ネットワーク ステータスの変化をアプリケーションに通知するシステム インテントを受信するように設定された単純なブロードキャスト レシーバーがあります。アイデアは、アプリが実行されている 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");
}
}
}
}
この方法でダイアログを表示することさえ可能ですか? ユーザーがアプリケーションのどこにいるのか、ブロードキャストが受信されたときの状態が不明であることを知る方法はありません。私の他のオプションは、テストする文字列とブール値のエクストラを含むインテントを使用して、ユーザーをログイン アクティビティに戻すことです。そうするのは悪いプログラミング習慣ですか?