为什么点击通知时不显示活动?

问题描述:

我写推送通知在Android项目,在MyFirebaseMessagingService服务写这个代码显示了通知:为什么点击通知时不显示活动?

Intent intent = new Intent(getApplicationContext(), NotificationMessage.class); // 
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); 
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
    .setSmallIcon(currentapiVersion) 
    .setContentTitle(this.getResources().getString(R.string.app_name)) 
    .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
    .setContentText(msg) 
    .setAutoCancel(true) 
    .setPriority(Notification.PRIORITY_HIGH) 
    .setContentIntent(contentIntent); 
mNotificationManager.notify((int) notificatioId, notificationBuilder.build()); 

时的主要活动表演,并发送推送,通知是展示和点击重定向到NotificationMessage活动,但是当我关闭主要活动并再次发送推送时,通知会显示给我,但是当我点击它时,重定向到主要活动并且不显示NotificationMessage活动,会发生什么?我该如何解决问题?谢谢。

试试这个:

private void setNotification(String notificationMessage) { 
    mNotificationManager = getApplication().getSystemService(Context.NOTIFICATION_SERVICE); 
    Intent notificationIntent = new Intent(getApplicationContext(), NotificationMessage.class); 

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    PendingIntent contentIntent = PendingIntent.getActivity(this, requestID,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

NotificationCompat.Builder notificationBuilder = new 
NotificationCompat.Builder(this) 
.setSmallIcon(currentapiVersion) 
.setContentTitle(this.getResources().getString(R.string.app_name)) 
       .setStyle(new 
NotificationCompat.BigTextStyle().bigText(msg)) 
       .setContentText(msg) 
       .setAutoCancel(true) 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setContentIntent(contentIntent); 
     mNotificationManager.notify((int) notificatioId, notificationBuilder.build()); 

} 
+0

什么是mNotificationManager? – behzad

+0

requestID是什么? – behzad

public class MainActivity extends AppCompatActivity { 

NotificationManager mNotificationManager; 
Button btn_notifcation; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn_notifcation= (Button) findViewById(R.id.btn); 
    btn_notifcation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      addNotification(); 
     } 
    }); 

} 


private void addNotification() { 
    NotificationCompat.Builder builder = 
      new NotificationCompat.Builder(this) 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setContentTitle("Notifications Example") 
        .setContentText("This is a test notification"); 


    Intent notificationIntent = new Intent(this, NotificationMessage.class); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
    builder.setContentIntent(contentIntent); 

    // Add as notification 
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    manager.notify(0, builder.build()); 
} 

} 
+0

什么是mNotificationManager? – behzad

+0

通过使用mNotificationManager您可以显示通知到您的应用程序的标题栏 – swap9

+0

谢谢,但是当我的应用程序在后台,并且您的代码运行时,不显示NotificationMessage活动 – behzad

private void generateNotification(Context context, String message) { 
    int icon = R.mipmap.ic_launcher; 
    long when = System.currentTimeMillis(); 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); 
    String title = context.getString(R.string.app_name); 

    Intent intent = new Intent(context, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 
      PendingIntent.FLAG_ONE_SHOT); 
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context) 
      .setSmallIcon(icon) 
      .setLargeIcon(bitmap) 
      .setContentTitle(title) 
      .setContentText(message) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setNumber(messageCount) 
      .setContentIntent(pendingIntent); 


    notificationManager.notify(0, notificationBuilder.build()); 

} 
+0

你测试了你的代码吗?当我的应用程序在后台,不工作 – behzad