调用需要API级别16(当前最小值为14):android.app.Notification.Builder #build

时间:2013-05-08 16:37:24

标签: android android-lint

enter image description here文档说在API级别11中添加了Notification.Builder。 为什么我会得到这个lint错误?

  

调用需要API级别16(当前最小值为14):android.app.Notification.Builder #build

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

清单:

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

我错过了什么吗?

如果我错了,请纠正我,但是在11级添加了API,对吗? Added in API level 11

5 个答案:

答案 0 :(得分:58)

NotificationBuilder.build()要求API级别16或更高级别。 API级别11和之间的任何内容15你应该使用NotificationBuilder.getNotification()。所以使用

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

答案 1 :(得分:16)

关于需要16的API级别的提示是正确的。这对我有用

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(&#34;弃用&#34;)并没有完全隐藏它,但我认为这可能有帮助。

答案 2 :(得分: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

如果您的应用支持的API版本与API级别4一样旧,则可以使用Android支持库中提供的NotificationCompat.Builder。

对于支持库

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

答案 3 :(得分:1)

You can use from this :

if (Build.VERSION.SDK_INT < 16) {
                Notification n  = new Notification.Builder(this)
                        .setContentTitle("New mail from " + "test@gmail.com")
                        .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 " + "test@gmail.com")
                        .setContentText("Subject")
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentIntent(pIntent)
                        .setAutoCancel(true).build();
                NotificationManager notificationManager =
                        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                notificationManager.notify(0, n);
            }

答案 4 :(得分:0)

我在android studio中遇到同样的问题。我在 build.gradle(module:app)文件中做了一些小改动,问题已经解决了。 enter image description here

同步项目后。