我在我的应用程序中使用AlarmManager。我想在发生警报时向用户显示警告。 我使用了AlertDialog,但它出错了。我怎么解决这个问题? 而且我想发出警告声和振动。任何链接或代码。
public class AReceiver extends BroadcastReceiver{
AlertDialog alertDialog;
public void onReceive(Context context, Intent intent) {
alertDialog = new AlertDialog.Builder(this).create(); // Error here: The constructor AlertDialog.Builder is undefined.
alertDialog.setTitle("title");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
} });
}
}
答案 0 :(得分:4)
您好,您无法在BroadcastReceiver
..
您在BroadcastReciver
中调用另一个Activity类,如下所示。
Intent myIntent = new Intent(context, AlarmActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
在本课程中,您使用了Alert Dialog。
答案 1 :(得分:0)
我可以告诉你如何解决这个问题的主要思路。
在AlarmManager中使用的BroadcastReceiver是一个带静态上下文的静态类。
应该在非静态上下文而不是静态上下文中执行AlertDialog。
我有两个解决此问题的方法。
将意图发送到具有非静态上下文的其他组件。
使用静态回调。并从非静态方法设置回调。
因此,当您在非静态上下文中获取警报事件时,可以使用AlertDialog。
答案 2 :(得分:0)
迟到但对某人可能仍然有用:
更正如下代码:
alertDialog = new AlertDialog.Builder(context).create(); // Now The constructor AlertDialog.Builder is defined.