使用PendingIntent显示对话框

我正在处理日历事件提醒。 在Android中没有原生的日历事件提醒,所以用户安装不同的日历应用程序。

现在这些应用程序可以在不同的提醒事件提醒通知可以显示。 现在我希望我在这些事件日历应用程序中编程设置事件,并在不及时显示任何通知,而popup消息将显示与声音报警。 在那我使用该网站的代码。 它的工作,但它以通知的forms显示提醒。

这是代码:

的onReceive

void doReminderWork(Intent intent) { Long rowId = intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID); NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(this, ReminderEditActivity.class); notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); Notification note=new Notification(android.R.drawable.stat_sys_warning, getString(R.string.notify_new_task_message), System.currentTimeMillis()); note.setLatestEventInfo(this, getString(R.string.notify_new_task_title), getString(R.string.notify_new_task_message), pi); note.defaults |= Notification.DEFAULT_SOUND; note.flags |= Notification.FLAG_AUTO_CANCEL; int id = (int)((long)rowId); mgr.notify(id, note); } 

现在,我想显示一个对话框,而不是通知,所以如何使用这些代码行,可以在对话框中使用这个未决的意图。

  Intent notificationIntent = new Intent(this, ReminderEditActivity.class); notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

Related of "使用PendingIntent显示对话框"

在您的Receiver类中 ,只需获取显示对话框而不是通知的代码即可。

显示Dialog的类:

 public class AlarmDialogPopUp extends Activity { private int m_alarmId; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the alarm ID from the intent extra data Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { m_alarmId = extras.getInt("AlarmID", -1); } else { m_alarmId = -1; } // Show the popup dialog showDialog(0); } @Override protected Dialog onCreateDialog(int id) { super.onCreateDialog(id); // Build the dialog AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("ALARM REMINDER"); alert.setMessage("Its time for the alarm "); alert.setCancelable(false); alert.setPositiveButton("Dismiss", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { AlarmDialogPopUp.this.finish(); } }); // Create and return the dialog AlertDialog dlg = alert.create(); return dlg; } } 

在你的onReceive显示对话框中:

 public void onReceive(Context context, Intent intent) { // Launch the alarm popup dialog Intent alarmIntent = new Intent("android.intent.action.MAIN"); alarmIntent.setClass(context, AlarmDialogPopUp .class); alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Pass on the alarm ID as extra data alarmIntent.putExtra("AlarmID", intent.getIntExtra("AlarmID", -1)); // Start the popup activity context.startActivity(alarmIntent); } 

编辑根据评论:

要播放声音,您需要使用下面的MediaPlayer。

将此行添加到AlarmDialogPopUp活动类的onCreate()中以播放声音。

 MediaPlayer mediaPlayer; //global variable. mediaPlayer = MediaPlayer.create(this,R.raw.alarmsound); 

在对话框的onClick()中添加以下onClick()行来停止声音:

 mediaPlayer.stop(); mediaPlayer.release(); 

希望这可以帮助。