Klick auf Notification macht nicht das was es soll... :(

M

mastix

Ambitioniertes Mitglied
34
Moinsen Leutz,

erstmal... frohe Weihnachten. :)

Ich habe hier ein kleines Problem, bei dem ich nach stundenlangem Testen einfach nicht auf die Lösung komme. Ich denke, dass dies ziemlich einfach zu fixen ist... ich komm nur nicht drauf wie. :)

Das Problem ist Folgendes:

Wenn man bei meiner App auf eine Notification klickt, dann wird die Message der Notification in der App angezeigt. Das funktioniert wunderbar, solange die Activity im aktiv im Vordergrund ist. Sobald man diese in den Hintergrund verlegt, kommt zwar die App hoch, aber die Message wird nicht angezeigt. D.h. es kommt irgendwie die falsche Instanz (eine neue Instanz) hoch. Halte ich nun die HOME-Taste gedrückt und wähle dann meine App aus... sehe ich die Message...

Da das ein bisschen blöd zu erklären ist... habe ich mal ein Video aufgenommen, was das zeigt:

http://dl.dropbox.com/u/1676562/NotificationIssue.mov

Ich bin mir ziemlich sicher, dass es nur einem von den Flags liegt, die ich dem Intent mitgebe... aber welche Flag-Kombi ist korrekt?

Hier mal mein Code:

Baue Notification zusammen:


Code:
// The PendingIntent to launch our activity if the user selects this
	// notification
	final Intent notificationIntent = new Intent(ManagerFactory
		.getMasterActivity(), MailerActivity.class);
	notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
		| Intent.FLAG_ACTIVITY_SINGLE_TOP);
	Log.d(TAG, "Set new message to Notification: " + p_message);
	notificationIntent
		.putExtra(Constants.NOTIFICATION_EXTRA_KEY, p_message);
	Log.d(TAG, "Setting requestCodeToFixNotificationBug: "
		+ s_requestCodeToFixNotificationBug);
	final PendingIntent contentIntent = PendingIntent.getActivity(
		ManagerFactory.s_service, s_requestCodeToFixNotificationBug++,
		notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

	notification.setLatestEventInfo(ManagerFactory.s_service, p_tickerText,
		p_message, contentIntent);

Reagiere auf Intent, um die Nachricht anzuzeigen:

Code:
*
     /* (non-Javadoc)
     * 
     * @see android.app.Activity#onNewIntent(android.content.Intent)
     */
    @Override
    protected final void onNewIntent(final Intent p_intent) {
	// when called via notification, get the extras
	Log.d(TAG, "Called onNewIntent...");
	final Bundle extras = p_intent.getExtras();
	Log.d(TAG, "Extra: " + extras);
	if (extras != null
		&& extras.getString(Constants.NOTIFICATION_EXTRA_KEY) != null
		&& !extras.getString(Constants.NOTIFICATION_EXTRA_KEY).trim()
			.equalsIgnoreCase("")) {
	    Log.d(TAG, "Extra:"
		    + extras.getString(Constants.NOTIFICATION_EXTRA_KEY));
	    this.showLongMessage(extras
		    .getString(Constants.NOTIFICATION_EXTRA_KEY));
	}
    }

Ich hoffe einer von euch hat den passenden Tipp! :)

Sascha
 

Ähnliche Themen

C
Antworten
8
Aufrufe
1.126
swa00
swa00
U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
705
swa00
swa00
Zurück
Oben Unten