У меня проблема с уведомлением в приемнике вещания.
Вот класс:
public class JokeAlarmReceiver extends BroadcastReceiver {
CompositeDisposable compositeDisposable = new CompositeDisposable();
public static final String NOTIFICATION_CHANNEL_ID = "Channel Joke ID";
public static final String NOTIFICATION_CHANNEL_NAME = "Channel";
public static final int NOTIFICATION_ID = 123;
@Inject
DataManager dataManager;
@Override
public void onReceive(Context context, Intent intent) {
((JokeApplication)context.getApplicationContext()).getAppComponent()
.plus(new JokeAlarmReceiverModule(context))
.inject(this);
getJokesToNotification();
createNotification(context);
}
public void createNotification(Context context) {
final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_mood_black_24dp)
.setContentTitle("Smile Reminder :)")
.setContentText(dataManager.getJokeForNotification())
.setStyle(new NotificationCompat.BigTextStyle())
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
public void getJokesToNotification(){
compositeDisposable.add(dataManager.getJokes()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
randomJokes -> {
// onNext
dataManager.setJokeForNotification(randomJokes.getSetup(),randomJokes.getPunchline());
Log.d("WORKING","1st");
},
throwable -> {
// onError
},
() -> {
// onCompleted
})
);
}
Короче говоря, как это работает ... Я использовал метод с помощью rxjava для вызова API, который должен дать мне объект RandomJoke, из которого я использовал 2 части с текстом. Вставляю dataManager в который я сохраняю текст. Затем я использую этот текст в качестве текста для уведомления. Я хочу, чтобы уведомление появлялось снова, даже когда мое приложение закрыто. Проблема в том, что все работает нормально, когда приложение все еще работает, но когда я закрываю его ... Уведомление кулака получает нулевое значение вместо текста, а второе и остальные уведомления работают нормально. Может кто-нибудь сказать, что я делаю не так?
Трансляция регистрируется через манифест, и я тестирую все на эмуляторе с API 25