更新:由版本12.0.0中的firebase修复
下面的错误代码已经使用此更新,它在8.0上运行良好,同时防止我原来的答案中列出的错误.
@TargetApi(26)
private final boolean zza(int var1) {
if(VERSION.SDK_INT != 26) {
return true;
} else {
try {
if(this.zzb.getResources().getDrawable(var1, (Theme)null) instanceof AdaptiveIconDrawable) {
Log.e("FirebaseMessaging", (new StringBuilder(77)).append("Adaptive icons cannot be used in notifications. Ignoring icon id: ").append(var1).toString());
return false;
} else {
return true;
}
} catch (NotFoundException var2) {
return false;
}
}
}
这并没有解决问题,但从评论中我被要求作为答案.以下是来自firebase 11.8.0的代码,它是罪魁祸首,仅适用于Android 8.0(API 26).检查的原因是因为自适应图标https://www.bleepingcomputer.com/news/mobile/android-oreo-adaptive-icons-bug-sends-thousands-of-phones-into-infinite-boot-loops/存在Android 8.0通知错误,因此此代码可以防止这种情况,但这样做也会阻止非自适应图标正常显示
@TargetApi(26)
private final boolean zzid(int var1) {
if(VERSION.SDK_INT != 26) {
return true;
} else {
try {
Drawable var2;
if((var2 = this.mContext.getResources().getDrawable(var1, (Theme)null)).getBounds().height() != 0 && var2.getBounds().width() != 0) {
return true;
} else {
Log.e("FirebaseMessaging", (new StringBuilder(72)).append("Icon with id: ").append(var1).append(" uses an invalid gradient. Using fallback icon.").toString());
return false;
}
} catch (NotFoundException var3) {
return false;
}
}
}
我在我的logcat中注意到,我的应用程序每次通知都会触发此代码两次,它会尝试我的通知drawable,我根据Firebase的说明在清单中设置,然后再次点击它尝试为启动器图标执行此操作.两者都失败了,即使我将它们制作成纯色的drawables.
根据来自southrop的另一条评论,firebase团队意识到了这个问题并正在努力修复,但没有给出时间表.
此代码不在11.6.0及更低版本中,因此如果您确实需要暂时使用此代码,请降级您的firebase.
希望这有助于找到此帖子的其他人搜索错误