0

Ich benutze GCM und wenn Benachrichtigungen kommen, möchte ich einige spezielle Dinge machen. Also, ich brauche etwas wie onClickListener auf der Benachrichtigung. Irgendeine Idee ? Hier ist mein Code:OnClickListener auf GCM Notification setzen

Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.lastlast) 
      .setContentTitle(getString(R.string.message)) 
      .setContentText(resMessage+getString(R.string.interested_int_you)) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
+0

Es gibt keine OnClickListener für die Benachrichtigung. Sie müssen PendingIntent für das verwenden, was Sie bereits tun. In Ihrem Fall wird MainActivity immer dann gestartet, wenn der Benutzer auf die Benachrichtigung klickt, und wenn Sie beim Start von MainActivity etwas anderes tun möchten, können Sie einige Werte in "intent" eingeben und nach denen in MainActivity suchen. –

+0

Danke für die Erklärung –

Antwort

3

Es ist sehr einfach, wie Daten von einer Aktivität zur anderen zu senden.

Sie müssen nur Ihre erforderlichen Daten in intent.putExtra ("Tag", "Daten") oder in Bundle.like this hinzufügen.

Intent intent = new Intent(this, MainActivity.class); 
intent.putExtra("notification_tag", notification); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

und holen Daten aus Ihrer definierten Aktivität

von

getIntent().getStringExtra("notification_tag"); 
+0

Was tun, wenn Aktivität im Vordergrund steht? In meinem Fall sind nur eine Aktivität in der Anwendung andere Fragmente. –

+0

Sie können Ihre Benachrichtigungsart in intent.putExtra() senden, und indem Sie Ihren Benachrichtigungstyp beurteilen, können Sie Ihre Fragment- und Aufrufmethode für Fragment öffnen –

Verwandte Themen