起動が完了するとアクティブになる broadcastReceiver があります。その理由は、デバイスの再起動後にすべてのアラームを再スケジュールしたいからです。ただし、続行するかどうかをユーザーに尋ねるダイアログを表示したいと考えています。これがコードです
public class StartupAlarmReceiver extends BroadcastReceiver{
Context con;
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
{
con = context;
AlertDialog.Builder actionBuilder = new AlertDialog.Builder(context);
actionBuilder.setTitle("test");
actionBuilder.setMessage("Do you want to restart alarms?");
actionBuilder.setCancelable(false);
actionBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
new MyAsyncTask().execute();
}
})
.setNegativeButton("No" , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = actionBuilder.create();
alert.show();
}
}
}
ただし、例外が発生しています:
11-25 18:51:31.906: E/AndroidRuntime(1949): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
11-25 18:51:31.906: E/AndroidRuntime(1949): at android.view.ViewRootImpl.setView(ViewRootImpl.java:693)
11-25 18:51:31.906: E/AndroidRuntime(1949): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:313)
11-25 18:51:31.906: E/AndroidRuntime(1949): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
原因はわかっていると思いますが、それを修正する方法がわかりません。(SOを読んでから)その理由は、ダイアログが表示できるようにアクティビティを取り、アプリ内にいないため、アクティビティがないためだと思います。再起動後にダイアログを表示する方法はありますか? トーストを表示できますが、ダイアログで失敗します
私の理論が間違っていて、要点を完全に見逃していない限り。助けてください、ありがとう