我每周都会使用接收器制作警报器。但是,我在下面的代码中出现以下错误
无法添加窗口 - 令牌null不适用于应用程序
我正在使用的代码是
public class AlarmReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
try {
displayAlert("Have you seen your chiropractor this month?", "Alert!", context);
}
catch (Exception e)
{
Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
public void displayAlert(final String error, String title, final Context context)
{
new AlertDialog.Builder(context.getApplicationContext()).setMessage(error)
.setTitle(title)
.setCancelable(true)
.setNeutralButton("Continue",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
Intent newIntent = new Intent(context, Appointment.class);
context.startActivity(newIntent);
}
})
.show();
}
}
答案 0 :(得分:0)
问题出在getApplicationContext()
new AlertDialog.Builder(this).setMessage(error)
.setTitle(title)
.setCancelable(true)
.setNeutralButton("Continue",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
Intent newIntent = new Intent(context, Appointment.class);
context.startActivity(newIntent);
}
})
.show();
取代getApplicationContext()
通过ActivityName.this
或getContext()
答案 1 :(得分:0)
而不是:
context.getApplicationContext();
使用
this
再试一次,这应该有效
答案 2 :(得分:0)
我真的不认为从AlertDialog
显示BroadcastReceiver
是个好主意。您应该创建一个Notification
,并在用户点击它时打开一些活动。
答案 3 :(得分:0)
我不想要通知,我只是做了一个便宜的把戏
我创建了一个空白活动MYExtraActivity并在Receiver中调用它
Intent newIntent = new Intent(context, MYExtraActivity .class);
context.startActivity(newIntent);
在这个新的活动中,我定义了一个警报和一切