una studio segundo plano notificación mensajes mantener maneja app android android-pendingintent

android - studio - maneja mensajes de notificación en una app en segundo plano



La intención pendiente en la notificación no funciona (5)

A continuación se encuentra mi bloque de código que debería abrir NotificationActivity cuando se toca la notificación. Pero no está funcionando.

private void setNotification(String notificationMessage) { Uri alarmSound = getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); mNotificationManager = getApplication().getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(getApplicationContext(), NotificationActivity2.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.logo) .setContentTitle("My Notification") .setStyle(new NotificationCompat.BigTextStyle() .bigText(notificationMessage)) .setContentText(notificationMessage).setAutoCancel(true); mBuilder.setSound(alarmSound); mBuilder.setContentIntent(contentIntent); mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); }


Agregué el generador de tareas y el siguiente código de bloque funcionó para mí.

Intent intent = new Intent(context, HomeActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(SplashActivity.class); stackBuilder.addNextIntent(intent); PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);


Es posible que esté utilizando un ID de notificación igual a 0. Hay un problema conocido con un ID de notificación que es 0. Si utilizará cualquier otro ID, debería funcionar.


Si la aplicación ya se está ejecutando, necesita manejarlo en onNewIntent

@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); //Handle intent here... }


Solo agrega tu actividad para manifestar así

<activity android:name="com.somePackage.SomeActivity" android:label="SomeLabel"> </activity>


prueba esto:

private void setNotification(String notificationMessage) { //**add this line** int requestID = (int) System.currentTimeMillis(); Uri alarmSound = getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); mNotificationManager = getApplication().getSystemService(Context.NOTIFICATION_SERVICE); Intent notificationIntent = new Intent(getApplicationContext(), NotificationActivity2.class); //**add this line** notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); //**edit this line to put requestID as requestCode** PendingIntent contentIntent = PendingIntent.getActivity(this, requestID,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.logo) .setContentTitle("My Notification") .setStyle(new NotificationCompat.BigTextStyle() .bigText(notificationMessage)) .setContentText(notificationMessage).setAutoCancel(true); mBuilder.setSound(alarmSound); mBuilder.setContentIntent(contentIntent); mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); }