2012-09-24 28 views
0

在我的任务中,我执行了提醒检查过程。如果提醒时间与当前时间相等,则会弹出一个弹出框。在此任务中,弹出框正确显示。需要在android的前屏幕上弹出警报

但是,如果我将这个任务合并到一个大的进程,这意味着提醒任务将是主程序的子程序。弹出窗口不会进入其他屏幕。如果时间是否满足了当前时间,警报必须显示给用户,而用户使用任何在这个节目的屏幕的..

if (LDbTime <= LSysTime) { 
            rem_id = c.getString(c.getColumnIndex("reminder_id")); 
            remName = c.getString(c.getColumnIndex("rname")); 
            mediaPlayer.start(); 
            handler.post(new Runnable(){ 
            public void run() { 
             alert.setTitle("Alert :"+remName); 
             alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, int whichButton) { 
               mediaPlayer.pause(); 
              } 
             }); 
             alert.show(); 
             db1.execSQL("UPDATE RemainAlarmS SET expired ='TRUE' WHERE reminder_id = " + rem_id); 
              } 
             }); 
            Thread.sleep(5000); 
           } 

在此警告消息,在需要的时候带来正面屏幕提醒唤醒。

请帮我找到解决办法..

在此先感谢。

回答

2

您可以使用下面的代码挂起的意图..

Intent i = new Intent("android.intent.action.DA"); 
PendingIntent operation = PendingIntent.getActivity(getBaseContext(), 0, i, Intent.FLAG_ACTIVITY_NEW_TASK); 
AlarmManager alarmManager = (AlarmManager) getBaseContext().getSystemService(ALARM_SERVICE); 
GregorianCalendar calendar = new GregorianCalendar(y,m,d, hr, mi); 
long alarm_time = calendar.getTimeInMillis(); 
alarmManager.set(AlarmManager.RTC_WAKEUP , alarm_time , operation); 

与“机器人。 intent.action.DA“表示DisplayNotification.java类的活动

public class DisplayNotification extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    int notifID = getIntent().getExtras().getInt("NotifID"); 
    Intent i = new Intent("android.intent.action.AD"); 
    i.putExtra("NotifID", notifID); 
    PendingIntent detailsIntent =PendingIntent.getActivity(this, 0, i, 0); 
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Notification notif = new Notification(R.drawable.ic_launcher,"Time's up!",System.currentTimeMillis()); 
    CharSequence from = "AlarmManager - Time's up!"; 
    CharSequence message = "This is your alert, courtesy of the AlarmManager";   
    notif.setLatestEventInfo(this, from, message, detailsIntent); 
    notif.vibrate = new long[] { 100, 250, 100, 500};   
    nm.notify(notifID, notif); 
    finish(); 
} 
} 

与“android.intent.action.AD”表示AlarmDetails.java类

public class AlarmDetails extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alarmdetails); 

    NotificationManager nm = (NotificationManager) 
      getSystemService(NOTIFICATION_SERVICE); 
     //---cancel the notification--- 
     nm.cancel(getIntent().getExtras().getInt("NotifID")); 
} 

} 

我希望这会帮助你!..

-1

您可以改用状态栏通知。

+0

它需要在当前运行或前端屏幕。 – gowri

2

如果您试图询问当您的活动不是用户手机上的焦点活动时如何显示对话框,请尝试使用通知。通过不同的应用程序弹出对话框会在用户做其他事情时中断用户。从Android UI准则:

Use the notification system — don't use dialog boxes in place of notifications 

If your background service needs to notify a user, use the standard notification system — 
don't use a dialog or toast to notify them. A dialog or toast would immediately 
take focus and interrupt the user, taking focus away from what they were doing: 
the user could be in the middle of typing text the moment the dialog appears 
and could accidentally act on the dialog. 
Users are used to dealing with notifications and 
can pull down the notification shade at their convenience to respond to your message. 

的指南创建的通知是在这里:http://developer.android.com/guide/topics/ui/notifiers/notifications.html