我注意到有关生产的奇怪崩溃报告。我试过查找它,但我没有在源代码中找到任何东西。对我来说,看起来这些设备的供应商只是修改了SDK中的内容。
但它发生在支持库中。那么这怎么可能发生呢?
Fatal Exception: java.lang.NoSuchMethodError: No interface method build()Landroid/app/Notification; in class Landroid/support/v4/app/NotificationBuilderWithBuilderAccessor; or its super classes (declaration of 'android.support.v4.app.NotificationBuilderWithBuilderAccessor' appears in /data/app/com.myapp-1/base.apk)
at android.support.v4.app.NotificationCompat$BuilderExtender.build(NotificationCompat.java:469)
at android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:768)
at android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1559)
at com.myapp.NotificationListener$MyNotification.updateText(MyNotification.java:106)
Builder mBuiler = new NotificationCompat.Builder(mContext);
...
private Notification updateText(String title, String message) {
return mBuidler
.setContentTitle(title)
.setContentText(message)
.setStyle(new BigTextStyle(mBuidler)
.bigText(message))
.build();
}
答案 0 :(得分:1)
如果您更新了Android SDK
但仍使用属于旧版本的support-v4
文件,则会发生此错误。
您可以检查build.gradle
(如果您使用的是android工作室),看看是否根据您最新的SDK更新设置了app-compact
库或support-v4
库。
此外,您的某个Gradle依赖项文件可能使用较早版本的support-v4
。
如果您使用的是eclipse
或其中包含support-v4.jar
的其他环境,请将其替换为SDK文件夹中的最新版本。
答案 1 :(得分:-1)
请使用以下代码:
NotificationCompat.Builder mBuidler = new NotificationCompat.Builder(this);
您的退货方式:
private NotificationCompat.Builder updateText(String title, String message) {
return mBuidler
.setContentTitle(title)
.setContentText(message)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.build();
}