7

Ich arbeite an der Kalendererinnerung. Es gibt keine native Kalendererinnerung in Android, so dass Benutzer verschiedene Kalender-Apps installieren können.Dialog mit PendingIntent anzeigen

Jetzt können diese Apps bei Erinnerungsereignissen unterschiedlich sein, wie auf Erinnerungsbenachrichtigungen angezeigt werden können. Jetzt möchte ich, dass ich ein Ereignis programmatisch in diesen Event-Kalender-Apps einstelle und rechtzeitig keine Benachrichtigung mehr anzeigen, stattdessen wird eine Popup-Meldung mit alarmähnlichem Ton angezeigt. Dazu benutze ich einen Code von dieser Seite. Es funktioniert, aber es zeigt Erinnerungen in Form von Benachrichtigungen.

Hier Code:

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

Jetzt möchte ich so anstelle der Meldung ein Dialogfeld zeigen, wie es aus der Verwendung dieser Zeilen Code möglich sein, dass diese anhängige Absicht verwendet werden sollte, in der Dialogbox.

Intent notificationIntent = new Intent(this, ReminderEditActivity.class); 
notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

Antwort

15

In Ihrer Empfängerklasse, Code nur den Dialog zu erhalten, anstatt Benachrichtigung angezeigt werden soll.

Klasse, die anzeigt, 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; 
    } 
} 

In Ihrem onReceive Dialog zeigen:

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 auf der Grundlage der Kommentar:

Ton zu spielen, Du musst mich benutzen diaPlayer wie unten.

Fügen Sie diese Zeile in der onCreate() der AlarmDialogPopUp Aktivitätsklasse hinzu, um den Sound abzuspielen.

MediaPlayer mediaPlayer; //global variable. 

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

die folgenden Zeilen in der onClick() des Dialogs Fügen Sie den Ton zu stoppen:

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

Hoffnung, das hilft.

+0

danke für die Hilfe. Wenn ich Sounds anzeigen möchte, wenn der Dialog angezeigt wird – User42590

+0

Bearbeitete meine Antwort. – Kanth

+0

Sie verdienen mehr als +1 ... Danke. –