0
私は、ネットワークの変更を検出し、ネットワーク接続がない場合、ユーザーに警告するために、このチュートリアルに従っ:閉じるトップ・アクティビティ
http://viralpatel.net/blogs/android-internet-connection-status-network-change/
を、それが活動を開くように私は、コードを修正ユーザーがネットワークから切断すると、NoInternetConnectionと呼ばれます。
ユーザーがネットワークに再接続すると、NoInternetConnectionアクティビティを終了します。私は放送受信機でこれを理解することができませんでした。これを行う方法に関するヒント?ここで
は私の放送受信機である:私のNoInternetActivityで
public class NetworkChangeReceiver extends BroadcastReceiver {
private static final String TAG = NetworkChangeReceiver.class.getSimpleName();
@Override
public void onReceive(final Context context, final Intent intent) {
String status = NetworkUtil.getConnectivityStatusString(context);
Log.d(TAG, "status: " + status);
ActivityManager am = (ActivityManager) context.
getSystemService(Activity.ACTIVITY_SERVICE);
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
if(status == "connected"){
if(className.toLowerCase().contains("nointernetactivity")){
// check if the No Internet Activity context is visible
Log.d(TAG, "Close noInternetActivity");
}
}else {
if(!className.toLowerCase().contains("nointernetactivity")){
Log.d(TAG, "opening NoInternetActivity");
Intent i = new Intent(context, NoInternetActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
// Toast.makeText(context, status, Toast.LENGTH_LONG).show();
}
}
このために 'LocalBroadcastManager'を使用することをお勧めします。標準のブロードキャストと同じパターン、つまりBroadcastReceiverです。つまり、ちょっとだけドロップする必要がありますが、ブロードキャストはアプリ内にとどまり、一般的には、はるかに高速です。 –