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");
        }
    }
}

}

この方法でダイアログを表示することさえ可能ですか? ユーザーがアプリケーションのどこにいるのか、ブロードキャストが受信されたときの状態が不明であることを知る方法はありません。私の他のオプションは、テストする文字列とブール値のエクストラを含むインテントを使用して、ユーザーをログイン アクティビティに戻すことです。そうするのは悪いプログラミング習慣ですか?

4

2 に答える 2

2
I have no way of knowing where the user is in the application, 

その場合、ブロードキャストを受信するときに、通知バーに通知を表示することを検討する必要があります

もう1つのオプションは、テスト用の文字列とブール値を追加したインテントを使用して、ユーザーをログインアクティビティに戻すことです。悪いですか

ユーザーが通知をクリックすると、ログインアクティビティに移動できます。

于 2012-06-21T12:09:41.683 に答える
0

各アクティビティに同じブロードキャストレシーバーを配置します。この場合、前にあるアクティビティがこのブロードキャストを受信し、そのアクティビティで接続が失われたことを示すダイアログを表示して、好きなことを行うことができます。

于 2012-06-21T12:25:26.293 に答える