Я хочу создать постоянное уведомление о строке состояния (например, текущий уровень заряда батареи - он всегда есть), но значок будет меняться каждый день в 00:00.Измените уведомление о статусе состояния Android каждый день
Кроме того, я хочу, чтобы это уведомление автоматически оповещалось после перезагрузки устройства, а не только после того, как пользователь открыл приложение.
Я создал уведомление в MainActivity, но не знаю, как сделать его предупреждением после перезагрузки, а также я не знаю, как его менять каждый день в полночь.
Я попытался создать AlarmService и широковещательный приемник, но он запускается каждые 5 секунд, и это слишком много, поэтому я удалил его.
Мой текущий код:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setContentTitle(getString(R.string.notificationTitle))
.setContentText(....)
.setLargeIcon(largeIconBitmap)
.setSmallIcon(getResources().getIdentifier("icon_status_" + myHelper.getCurrentImageNumber(),"drawable", getPackageName())); // change the icon at mid-night. 'getCurrentImageNumber' should get me the right icon number
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
Notification notification = mBuilder.build();
notification.flags |= Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mylHelper.myRequestCode, notification);
Прямо сейчас я вижу уведомления, но значок не меняется, и это не сигнал тревоги после перезагрузки. Я видел несколько ответов в stackoverflow, но мне ничего не помогло.
Нужно ли регистрировать мою службу в AndroidManifest.xml тоже? вчера это было то, что заставило его работать каждые 5 секунд. – TamarG
Да, вам также нужно зарегистрировать его здесь. У вас будет широковещательный приемник, который запускает службу в ответ на получение одного из двух вышеуказанных фильтров намерений (TIME_TICK, BOOT_COMPLETED). Ваш вещательный приемник должен иметь логику только для запуска службы, если время 00:00 или ваше устройство только что загрузилось. Если вам нравится больше предложений, добавьте еще какой-нибудь код! – apelsoczi