Я добавляю две кнопки действий в локальное уведомление.Я установил ожидающее намерение для каждого действия с некоторым параметром и вызывающим широковещательным приемником.В методе 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 значение времени не равно нулю.
Я что-то упустил?