报警管理器有问题吗?

发布于 2024-11-18 17:34:21 字数 612 浏览 4 评论 0原文

我在我的应用程序中使用 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;
        } });

 }
}

I'm using AlarmManager in my app. I want to display the user a warning while alarm occurs.
I used an AlertDialog but it gives an error. How can I solve this problem?
And I want to put the warning sound and vibration. Any link or code.

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;
        } });

 }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情愿 2024-11-25 17:34:21

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

BroadcastReciver 中调用另一个 Activity 类,如下所示。

Intent myIntent = new Intent(context, AlarmActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);

在本课程中,您使用了警报对话框。

Hi you can not used AlertDialog in BroadcastReceiver..

you call another Activity class in BroadcastReciver like below.

Intent myIntent = new Intent(context, AlarmActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);

And in this class you used Alert Dialog.

浅忆 2024-11-25 17:34:21

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

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

  • AlertDialog 应该在非静态上下文而不是静态上下文中执行。

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

所以当你在非静态上下文中获取警报事件,可以使用AlertDialog。

I can show you the main idea of how to solve this problem.

  • The BroadcastReceiver using in the AlarmManager is a static class with static context.

  • AlertDialog should be executed in a non-static context instead of static context.

I have two solutions for this issue.

So when you get the alarm event in an non-static context, you can use AlertDialog.

寒冷纷飞旳雪 2024-11-25 17:34:21

迟到但可能对某人仍然有用:

更正代码如下:

alertDialog = new AlertDialog.Builder(context).create(); // Now The constructor AlertDialog.Builder is defined.

Late but maybe still useful for someone:

Correct the code like below:

alertDialog = new AlertDialog.Builder(context).create(); // Now The constructor AlertDialog.Builder is defined.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文