Android 如何在具有API 15的设备上调用Notification Builder.build()?

Android 如何在具有API 15的设备上调用Notification Builder.build()?,android,Android,我的设备是galaxy s2,上面有API 15。 我的程序有min sdk api 11和target sdk api 19。 它使用Notification builder并在模拟器中运行良好。 试图在设备上运行 03-04 09:51:47.503: E/AndroidRuntime(16416): FATAL EXCEPTION: main 03-04 09:51:47.503: E/AndroidRuntime(16416): java.lang.NoSuchMethodError:

我的设备是galaxy s2,上面有API 15。 我的程序有min sdk api 11和target sdk api 19。 它使用Notification builder并在模拟器中运行良好。 试图在设备上运行

03-04 09:51:47.503: E/AndroidRuntime(16416): FATAL EXCEPTION: main
03-04 09:51:47.503: E/AndroidRuntime(16416): java.lang.NoSuchMethodError: android.app.Notification$Builder.build
03-04 09:51:47.503: E/AndroidRuntime(16416):    at com.myprogram.NotifyActivity.onReceive(NotifyActivity.java:60)
03-04 09:51:47.503: E/AndroidRuntime(16416):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2130)
03-04 09:51:47.503: E/AndroidRuntime(16416):    at android.app.ActivityThread.access$1500(ActivityThread.java:127)
03-04 09:51:47.503: E/AndroidRuntime(16416):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
03-04 09:51:47.503: E/AndroidRuntime(16416):    at android.os.Handler.dispatchMessage(Handler.java:99)

如果我理解正确的话,android文档要求以可能的最高版本为目标,并为具有较低api的设备使用支持库。我根据java.lang.NoSuchMethodError上的说明安装了支持库,表明编译期间类路径中存在
android.app.Notification$Builder.build
方法,但在设备上运行应用程序期间不存在。您的run you应用程序是否已在其他设备中运行?可能Samsung更改了该类的实现。

Builder.build()从API级别16开始提供

使用以下方法创建通知

@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public static Notification build(final Builder builder) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        return builder.build();
    } else {
        return builder.getNotification();
    }
}
或者你可以使用


您必须自己在源代码中定位支持库;仅仅将其添加到项目中是不够的。该系统不只是使用ITOK,我更改了代码以使用NoTimeCuiltCub.Builder,它似乎起作用。“像JujujuSU,请考虑接受一个答复。请看我的评论我做了什么修复它。尝试测试您的解决方案,我得到一个编译错误在<代码> @ SuffilLink(“NeWAPI”))。
说明资源路径位置类型注释类型的属性值未定义