首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AlarmManager问题?

AlarmManager问题?
EN

Stack Overflow用户
提问于 2011-07-06 20:46:13
回答 3查看 654关注 0票数 1

我在我的应用中使用了AlarmManager。我想在报警发生时向用户显示一个警告。我使用了一个AlertDialog,但它给出了一个错误。我该如何解决这个问题?我想把警报声和振动。任何链接或代码。

代码语言:javascript
运行
复制
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;
        } });

 }
}
EN

回答 3

Stack Overflow用户

发布于 2011-07-06 20:53:11

您好,您不能在BroadcastReceiver中使用AlertDialog。

您可以在BroadcastReciver中调用另一个Activity类,如下所示。

代码语言:javascript
运行
复制
Intent myIntent = new Intent(context, AlarmActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);

在这个类中,您使用了Alert Dialog。

票数 4
EN

Stack Overflow用户

发布于 2016-10-07 23:02:00

我可以向你展示如何解决这个问题的主要思想。

  • 在AlarmManager中使用的BroadcastReceiver是具有静态上下文的静态类。

应在非静态上下文而不是静态上下文中执行

  • AlertDialog。

对于这个问题,我有两个解决方案。

  • 向具有非静态上下文的其他组件发送意图。

示例:https://github.com/yanfaxg/leaveme/blob/master/app/src/main/java/com/sunny/leaveme/AlarmHelper.java#L93

  • 使用静态回调。并从非静态方法设置回调。

示例:https://github.com/sunnyleevip/leaveme/blob/master/app/src/main/java/com/sunny/leaveme/common/AlarmHelper.java

因此,当您在非静态上下文中获取警报事件时,您可以使用AlertDialog。

票数 0
EN

Stack Overflow用户

发布于 2016-10-28 03:37:52

虽然晚了,但可能对某些人还是有用的:

更正代码,如下所示:

代码语言:javascript
运行
复制
alertDialog = new AlertDialog.Builder(context).create(); // Now The constructor AlertDialog.Builder is defined.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6596586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档