2013-05-08 2 views
30

enter image description here В документации указано, что Notification.Builder добавлен в уровень API 11. Почему я получаю эту ошибку lint?Для вызова требуется уровень API 16 (текущий минимум равен 14): android.app.Notification.Builder # build

вызова требуется уровень API 16 (ток мин 14): android.app.Notification.Builder # построить

notification = new Notification.Builder(ctx) 
       .setContentTitle("Title").setContentText("Text") 
       .setSmallIcon(R.drawable.ic_launcher).build(); 

манифеста:

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="17" /> 

ли я что-то отсутствует?

Исправьте меня, если я ошибаюсь, но API добавлен на уровне 11, правильно?

+0

http://tools.android.com/tips/lint-checks. Его предупреждение о том, что разработчик уведомлений требует api 16 – Raghunandan

+1

, прокрутите страницу вниз и просмотрите тему ниже общедоступных методов. – Raghunandan

+0

Спасибо. метод сборки добавлен в уровень 16 ... – pt2121

ответ

54

NotificationBuilder.build() требует уровень API 16 или выше. Все, что между уровнем API 11& 15, вы должны использовать NotificationBuilder.getNotification(). Поэтому используйте

notification = new Notification.Builder(ctx) 
       .setContentTitle("Title").setContentText("Text") 
       .setSmallIcon(R.drawable.ic_launcher).getNotification(); 
+0

любезно комментарий Cammille в этом ответе http://stackoverflow.com/a/8869647/931982 – stinepike

+0

Вы имеете в виду, что документ неправильный? он говорит, что api добавлен на уровне 11. – pt2121

+0

не не ошибаюсь .. проверьте ссылки, которые я предоставил в ответ .. там явно написано, что сборка из api 16. – stinepike

5

Android Lint - это новый инструмент, внедренный в ADT 16 (и инструменты 16), который сканирует источники проекта Android для потенциальных ошибок. Он доступен как в качестве инструмента командной строки, а также интегрируется с Eclipse,

http://tools.android.com/tips/lint

Для списка линт проверок

http://tools.android.com/tips/lint-checks

Для подавляя предупреждение ворса

http://tools.android.com/tips/lint/suppressing-lint-warnings

http://developer.android.com/reference/android/app/Notification.Builder.html

Если ваше приложение поддерживает версии Android как старые, такие как API уровня 4, вы можете использовать NotificationCompat.Builder, доступный в библиотеке поддержки Android.

Для поддержки библиотеки

http://developer.android.com/tools/extras/support-library.html

14

Совет, касающийся уровня API, который должен быть 16, является правильным. Это работает для меня

if (Build.VERSION.SDK_INT < 16) { 
    nm.notify(MY_NOTIFICATION_ID, notificationBuilder.getNotification()); 
} else { 
    nm.notify(MY_NOTIFICATION_ID, notificationBuilder.build()); 
} 

У меня была проблема, где уведомление работало отлично на новых устройствах, но не на Android 4.0.4 (уровень API 15). Я получаю сообщение об исключении из затухания. @SuppressWarnings ("deprecation") не скрывает полностью, но я думаю, что это, вероятно, полезно.

2

Вы можете использовать от этого:

if (Build.VERSION.SDK_INT < 16) { 
       Notification n = new Notification.Builder(this) 
         .setContentTitle("New mail from " + "[email protected]") 
         .setContentText("Subject") 
         .setSmallIcon(R.mipmap.ic_launcher) 
         .setContentIntent(pIntent) 
         .setAutoCancel(true).getNotification(); 
       NotificationManager notificationManager = 
         (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
       notificationManager.notify(0, n); 
      } else { 
       Notification n = new Notification.Builder(this) 
         .setContentTitle("New mail from " + "[email protected]") 
         .setContentText("Subject") 
         .setSmallIcon(R.mipmap.ic_launcher) 
         .setContentIntent(pIntent) 
         .setAutoCancel(true).build(); 
       NotificationManager notificationManager = 
         (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
       notificationManager.notify(0, n); 
      } 
-2

У меня такая же проблема в андроида студии. Я сделал незначительные изменения в файле build.gradle (module: app) и проблема была решена. enter image description here

После проекта синхронизации.

Смежные вопросы