Показать диалог с помощью PendingIntent

Я работаю над напоминанием о событиях в календаре. В Android нет встроенного напоминания о событиях календаря, поэтому пользователь устанавливает различные приложения календаря.

Теперь эти приложения могут отличаться от напоминаний о событиях, например, о напоминаниях о напоминаниях. Теперь я хочу, чтобы я задал событие программно в этих календарных приложениях событий и вовремя достигло не уведомления, а всплывающее сообщение будет отображаться с сигналом тревоги как звук. При этом я использую код с этого сайта. Он работает, но он показывает напоминания в виде уведомлений.

Вот код:

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

В своем классе Receiver просто введите код, чтобы отобразить диалоговое окно вместо Notification.

Класс, отображающий диалоговое окно:

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

EDIT на основе комментария:

Для воспроизведения звука вам необходимо использовать MediaPlayer, как показано ниже.

Добавьте эту строку в класс активности onCreate() класса AlarmDialogPopUp чтобы воспроизвести звук.

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

Добавьте нижеуказанные строки в диалоговом окне onClick() чтобы остановить звук:

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

Надеюсь это поможет.