アプリでBroadcastReceiverを使用してインターネット接続状態を取得しようとしています。インターネットが利用できない場合は、AlertDialogボックスを表示したいと思います。
これが私のBroadcastReceiverです:
public class ConnectivityChangedReceiver extends BroadcastReceiver{
@Override
public void onReceive( Context context, Intent intent )
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
} else {
showInternetAlertDialog(context);
}
}
public void showInternetAlertDialog(Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("You have no internet connection.")
.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
}
});
builder.show();
return;
}
}
マニフェストでもこのレシーバーを定義しました。マニフェストでネットワーク状態にアクセスするためのアクセス許可を定義しました。
<receiver android:name="com.lisnx.service.ConnectivityChangedReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
しかし、インターネットがなくなってAlertDialogボックスを開こうとすると、次の例外が発生します。
10-19 16:25:21.474 E/AndroidRuntime( 6864): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
10-19 16:25:21.474 E/AndroidRuntime( 6864): at android.view.ViewRoot.setView(ViewRoot.java:509)
10-19 16:25:21.474 E/AndroidRuntime( 6864): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
10-19 16:25:21.474 E/AndroidRuntime( 6864): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-19 16:25:21.474 E/AndroidRuntime( 6864): at android.app.Dialog.show(Dialog.java:241)
コンテキストの問題だと思いますが、正確に何が問題なのかわかりません。これについて私を助けてください。任意の解決策をいただければ幸いです。よろしくお願いします。