代码之家  ›  专栏  ›  技术社区  ›  AndyCr15

上下文未传递到NotificationReceiver(BroadcastReceiver)

  •  0
  • AndyCr15  · 技术社区  · 7 年前

    我收到一个通知,当我点击它时,它会简单地关闭,应用程序不会重新显示。

    这是我的主要活动-

    意图putExtra(“消息”,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);
    

    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" />
    

    我错过了什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Muthukrishnan Rajendran    7 年前

    您应该创建新的意图来打开活动,而不是来自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());
    
            }
        }