即使应用程序关闭,如何弹出警报

时间:2012-05-18 19:29:57

标签: android android-alertdialog

我正在开发一个基于位置的闹钟,这是一个Android应用程序。

所有编码部分都已完成。

但应用程序关闭时,不会显示警报提示对话框。

请帮助我,即使用户正在使用其他应用程序或在主屏幕中,我也会尝试弹出警报。

此时我的闹钟代码如下所示:

final MediaPlayer mp = MediaPlayer.create(LocAlarmProject.this, R.raw.airtel); 

mp.start();         

// LocAlarmProject.this below is what's causing the problem:
final AlertDialog.Builder builder=new AlertDialog.Builder(LocAlarmProject.this);

builder.setTitle(disp_title);

builder.setMessage(disp_desc);

builder.setIcon(R.drawable.alarm);

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {                        

     mp.stop();

}

 });

 builder.show();

3 个答案:

答案 0 :(得分:1)

我很确定您正在寻找Service.

复制并粘贴:

  

服务是表示一个的应用程序组件   应用程序希望执行更长时间运行的操作而不是   与用户交互或为其他人提供功能   要使用的应用程序每个服务类必须具有相应的    声明在其包的AndroidManifest.xml中。服务   可以使用Context.startService()和Context.bindService()启动。

答案 1 :(得分:1)

使用通知服务跟踪状态.....访问...... http://developer.android.com/guide/topics/ui/notifiers/notifications.html

答案 2 :(得分:0)

执行此操作的正确方法需要几个步骤。对不起,如果您之前没有这样做,这不是一件轻而易举的事:

首先,您将使用Android的内置AlarmManager来安排您希望激活应用的时间。您可以使用唤醒时间和PendingIntent安排新闹钟。

其次,创建用于激活应用程序的PendingIntent以显示警报。

第三,您可以通过多种方式处理此Intent,最常见的是创建一个扩展BroadcastReceiver以接收Intent的类。在显示警报时通知此课程。您创建并放入PendingIntent的Intent将传递给其onReceive()方法。您将此信息传递给您的应用程序以显示警报对话框。 ---您也可以注册主应用程序来接收Intent,然后覆盖Activity中的onNewIntent(Intent)方法。

四,在BroadcastReceiver文件中注册AndroidManifest.xml。这也是注册此接收器以侦听您创建的Intent的地方。您可以使用<intent-filter>标记执行此操作。

五,(可选)如果您希望即使手机处于睡眠状态也能显示闹钟,并且您希望确保在用户确认闹钟之前它不会重新进入睡眠状态,您需要获取WAKE_LOCK这样做。

这比使用服务更可取的原因是它不会消耗资源只是为了等待警报,而且如果Android决定杀死你的应用程序释放内存它仍然有效。祝你好运,编码愉快!