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

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

Я создал 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»?
  • Android: удалить уведомление из панели уведомлений
  • проблема с уведомлением о намерении андроида
  • Как использовать Notification.Builder
  • Лучший способ сериализации NSData в hexadeximal string
  • PendingIntent работает правильно для первого уведомления, но неправильно для остальных
  • Уведомление Не показывать
  • NotificationCompat с API 26
  • Извлечение текста извещных, contentView или contentIntent
  • Проверьте, включены ли локальные уведомления в IOS 8
  • Обнаруживать новое уведомление для Android
  • Interesting Posts

    Как клиенты могут легко и безопасно отправлять мне пароли?

    Неправильное соотношение сторон в mp4 (H.264), созданное камерой Samsung

    Как я могу восстановить файлы, когда папка отображается пустым, но файлы не удаляются?

    Spotify, Youtube, Shockwave Flash и другие программы, не работающие

    Невозможно создать или отредактировать виртуальные устройства Android (AVD) от Eclipse, ADT 22.6

    Как включить антиалиасинг в произвольных Java-приложениях?

    У меня есть как кабель, так и DSL дома. Как я могу это использовать?

    Несколько копий калькулятора Windows

    Как принять приглашение на встречу с помощью сочетания клавиш в Outlook 2007

    Как я могу вставить изображение с iTextSharp в существующий PDF-файл?

    Почему Graphics.MeasureString () возвращает более высокий, чем ожидалось, номер?

    Rand ()% 14 генерирует только значения 6 или 13

    Структура данных и адрес Firebase

    Атрибут входного автофокуса

    Как передать строку из одной активности в другую?

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