2017-07-09 29 views
0

我有一个通知,当我点击它时,它只是关闭,应用程序不会回到视图中。上传不通过NotificationReceiver(BroadcastReceiver)

这是我的MainActivity -

意向意图=新意图(getApplicationContext(),NotificationReceiver.class); intent.putExtra(“Message”,notificationText);

  PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 

然后NotificationReceiver看起来是这样的 -

public class NotificationReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

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

     String notificationText = intent.getStringExtra("Message"); 
     //if we want ring on notification then uncomment below line 
//  Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context) 
       .setContentIntent(pendingIntent) 
       .setSmallIcon(R.drawable.rr) 
       .setContentTitle("Check your reminders!") 
       .setContentText(notificationText) 
       .setAutoCancel(true); 

     notificationManager.notify(100, builder.build()); 

    } 
} 

在我的清单我有这个。

<receiver 
      android:name=".NotificationReceiver" /> 

我错过了什么?

谢谢!

回答

2

您应该创建新的Intent来打开活动,而不是来自onReceive的现有意图。

public class NotificationReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 



      String notificationText = intent.getStringExtra("Message"); 
      //if we want ring on notification then uncomment below line 
//  Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

      Intent resultIntent = new Intent(context, MainActivity.class); 
      resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
        | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

      PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

      NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context) 
        .setContentIntent(pendingIntent) 
        .setSmallIcon(R.drawable.rr) 
        .setContentTitle("Check your reminders!") 
        .setContentText(notificationText) 
        .setAutoCancel(true); 

      notificationManager.notify(100, builder.build()); 

     } 
    } 
+0

工程很好。谢谢。 (我会尽快接受) – AndyCr15