2013-05-08 71 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級,對不對? Added in API level 11

+0

http://tools.android.com/tips/lint-checks。它是一個皮膚警告,通知生成器需要api 16 – Raghunandan 2013-05-08 16:40:42

+1

向下滾動相同的頁面,並檢查公共方法下面的主題 – Raghunandan 2013-05-08 16:52:31

+0

謝謝。在16級中添加構建方法... – pt2121 2013-05-08 16:57:23

回答

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 2013-05-08 16:45:21

+0

您的意思是文檔不對?它說api被添加到了第11級。 – pt2121 2013-05-08 16:51:32

+0

沒錯沒有錯..檢查我在答案中提供的鏈接..有明確的書面說明構建來自api 16. – stinepike 2013-05-08 16:52:54

5

Android Lint是在ADT 16(和工具16)中引入的一種新工具,它掃描Android項目源以查找潛在的錯誤。它可以同時作爲一個命令行工具,以及與Eclipse

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

集成皮棉檢查

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

的列表爲supressing皮棉警告

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

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

如果您的應用支持與API級別4一樣舊的Android版本,則可以改爲使用Android支持庫中的NotificationCompat.Builder。

對於支持庫

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)工作正常。我確實得到了eclipse的棄用警告表單。 @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

我已經在Android Studio中同樣的問題。我做了build.gradle(模塊:應用程序)文件中的小改動,問題已解決。 enter image description here

同步項目後。

相關問題