Как реализовать устаревшие методы уведомления

У меня небольшая проблема, но я не понимаю, как это сделать.

Я создал class для предоставления уведомлений, но эти строки отмечены как устаревшие:

... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... 

Альтернативные методы:

 ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... при ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... 

Могу ли я написать код что-то вроде:

 if(API_level < 11) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... } при if(API_level < 11) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... } 

Я предоставляю минимальную версию sdk как «8».

Редактировать:

Мне понравилось:

 int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB){ Notification notification = new Notification(icon, text, time); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TaskDetails.class), 0); notification.setLatestEventInfo(this, title, text, contentIntent); notification.flags |= Notification.FLAG_AUTO_CANCEL; mNM.notify(NOTIFICATION, notification); } else { // what to write here } 

Что я могу написать для else части?

Вот как я пришел к решению:

 if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB) { notification = new Notification(icon, text, time); notification.setLatestEventInfo(this, title, text, contentIntent); // This method is removed from the Android 6.0 notification.flags |= Notification.FLAG_AUTO_CANCEL; mNM.notify(NOTIFICATION, notification); } else { NotificationCompat.Builder builder = new NotificationCompat.Builder( this); notification = builder.setContentIntent(contentIntent) .setSmallIcon(icon).setTicker(text).setWhen(time) .setAutoCancel(true).setContentTitle(title) .setContentText(text).build(); mNM.notify(NOTIFICATION, notification); } 

Редактировать:

Вышеупомянутое решение работает. Тем не менее, поскольку был введен class NotificationCompat.Builder , мы можем пропустить условие if для проверки, которое сравнивает текущую версию API. Итак, мы можем просто удалить условие if...else и перейти к:

 NotificationCompat.Builder builder = new NotificationCompat.Builder( this); notification = builder.setContentIntent(contentIntent) .setSmallIcon(icon).setTicker(text).setWhen(time) .setAutoCancel(true).setContentTitle(title) .setContentText(text).build(); mNM.notify(NOTIFICATION, notification); 

Это правильный способ получить уровень.

  final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); if (sdkVersion < Build.VERSION_CODES.HONEYCOMB) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards } при  final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); if (sdkVersion < Build.VERSION_CODES.HONEYCOMB) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards } 

Все коды версий можно найти на этой ссылке разработчика .

  • Обновить текст уведомления, а не целое уведомление
  • Android: Как создать уведомление «Ongoing»?
  • Отсутствие права на уведомление Push Push
  • Как нарисовать представление поверх всего?
  • Уведомление Не показывать
  • я хочу показать уведомление в 8:00 ежедневно
  • Лучший способ сериализации NSData в hexadeximal string
  • Извлечение текста извещных, contentView или contentIntent
  • Несколько уведомлений о том же действии
  • Как использовать Notification.Builder
  • Отключить звук из NotificationChannel
  • Interesting Posts

    Проблемы с методом Paint в Java, смехотворная скорость обновления

    AngularJS – дождитесь завершения нескольких запросов ресурсов

    Что означает точка (.) В инициализаторе структуры?

    Как мне требовать, чтобы универсальный тип реализовал такую ​​операцию, как Add, Sub, Mul или Div в общей функции?

    Как итеративно генерировать k элементов подмножеств из набора размера n в java?

    Преобразование строк в заголовок

    Как использовать WebRequest для доступа к зашифрованному сайту SSL с помощью https?

    Tmux – любой способ включить прокрутку, но не выбор?

    jQuery onclick toggle имя classа

    Почему иногда клавиатура на моей клавиатуре не работает?

    Как найти, какая транзакция вызывает состояние «Ожидание таблицы метаданных»?

    Как получить hash MD5 файла на C ++?

    Как запустить XP в безопасном режиме

    как полностью отключить утверждение

    Можно ли запретить EntityFramework 4 переписывать настроенные свойства?

    Давайте будем гением компьютера.