【问题标题】:alert needs to pop-up on front screen in android警报需要在android的前屏幕上弹出
【发布时间】:2012-10-05 13:12:36
【问题描述】:

在我的任务中,我执行了提醒检查过程。如果提醒时间等于当前时间,它将弹出一个弹出框。在此任务中,弹出框正确出现。

但是如果我将此任务合并到某个大进程中,这意味着提醒任务将是主程序的子程序。弹出窗口没有出现在其他屏幕中。如果时间符合当前时间,则必须向用户显示警报,同时用户使用本程序中的任何屏幕..

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

在此提醒消息中需要在提醒唤醒时为前屏显示。

请帮助我找到解决方案..

提前致谢。

【问题讨论】:

    标签: android android-alertdialog reminders


    【解决方案1】:

    您可以将以下代码用于待定 Intent..

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

    而“android.intent.action.DA”表示DisplayNotification.java类的Activity

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

    希望对你有帮助!..

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

        您可以改用状态栏通知。

        【讨论】:

        • 它需要在当前运行或前屏上。
        猜你喜欢
        • 2018-10-13
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多