Кнопка «Действие уведомления» - «Ожидание» не работает - PullRequest
0 голосов
/ 17 октября 2018

Я добавляю две кнопки действий в локальное уведомление.Я установил ожидающее намерение для каждого действия с некоторым параметром и вызывающим широковещательным приемником.В методе onReceive получателя широковещательной передачи, когда я пытаюсь получить intent.getStringExtra (), каждый раз возвращает значение null.Я знаю, что это простой вопрос, но мне чего-то не хватает, я не могу его найти.Извини за это.

Добавление кнопки действия:

Intent takenIntent = new Intent(context, NotificationReceiver.class);
        takenIntent.setAction(Constants.TAKEN);
        Toast.makeText(context,time,Toast.LENGTH_LONG).show();
        takenIntent.putExtra(Constants.TIME,time);
        Log.e(Constants.TIME,time);


        PendingIntent takenPendingIntent =
                PendingIntent.getBroadcast(context, 0, takenIntent, 0);

        Intent notTakenIntent = new Intent(context, NotificationReceiver.class);
        notTakenIntent.putExtra(Constants.TIME,time);
        notTakenIntent.setAction(Constants.TAKEN);

        PendingIntent notTakenIntentPendingIntent =
                PendingIntent.getBroadcast(context, 0, notTakenIntent, 0);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, id)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(title)
                .setContentText(AppUtils.get12HrsDate(time))
                .setAutoCancel(true)
                .setGroupSummary(true)
                .setGroup(GROUP_KEY)
                .setContentIntent(pendingIntent)
                .setChannelId(id)
                .addAction(R.drawable.ic_drug_profile,context.getString(R.string.taken), takenPendingIntent)
                .addAction(R.drawable.ic_drug_profile,context.getString(R.string.not_taken), notTakenIntentPendingIntent);

Трансляция NotificationReceiver:

public class NotificationReceiver extends BroadcastReceiver {
    private static final String TAG = NotificationReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent != null){
            String action = intent.getAction();
            if(action != null){
                // always return null
                String time = intent.getStringExtra(Constants.TIME);
                if(action.equalsIgnoreCase(Constants.TAKEN)){
                    Toast.makeText(context,action + " " + time,Toast.LENGTH_LONG).show();
                    Log.e(TAG,action);
                }else if(action.equalsIgnoreCase(Constants.NOT_TAKEN)){
                    Toast.makeText(context,action + " " + time,Toast.LENGTH_LONG).show();
                    Log.e(TAG,action);
                }
            }
        }
    }
}

AndroidManifest.xml

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

Я установил отладчик и проверилво время выполнения putExtra значение времени не равно нулю.

Я что-то упустил?

...