public class OneSignalPushService extends NotificationExtenderService {
@Override
protected boolean onNotificationProcessing(OSNotificationReceivedResult notification) {
if (!TinyDbWrap.getInstance().isPushEnabled()) {
KLog.d(this.getClass().getSimpleName(), "Notification will not displayed");
return true;
}
OverrideSettings overrideSettings = new OverrideSettings();
overrideSettings.extender = new NotificationCompat.Extender() {
@Override
public NotificationCompat.Builder extend(NotificationCompat.Builder notificationBuilder) {
notificationBuilder.setDefaults(0);
notificationBuilder.setContentTitle(getApplicationContext().getResources().getString(R.string.app_name));
boolean is_in_silent_mode = false; /*or true by user's settings in app*/
/*TinyDbWrap.getInstance()... - it stores user's settings*/
KLog.d(OneSignalPushService.class.getSimpleName(), "Notification isSoundPushEnabled: " + TinyDbWrap.getInstance().isSoundPushEnabled());
if (!is_in_silent_mode && TinyDbWrap.getInstance().isSoundPushEnabled()) {
notificationBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
} else {
notificationBuilder.setSound(null);
}
KLog.d(OneSignalPushService.class.getSimpleName(), "Notification isVibrationPushEnabled: " + TinyDbWrap.getInstance().isVibrationPushEnabled());
if (!is_in_silent_mode && TinyDbWrap.getInstance().isVibrationPushEnabled()) {
notificationBuilder.setVibrate(new long[]{0, 100, 200, 300, 400});
} else {
notificationBuilder.setVibrate(new long[]{0});
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notificationBuilder.setColor(ContextCompat.getColor(getApplicationContext(), R.color.bg_first_item_white_scheme));
}
notificationBuilder.setLights(ContextCompat.getColor(getApplicationContext(), R.color.time_white_sheme), 500, 500);
return notificationBuilder;
}
};
OSNotificationDisplayedResult result = displayNotification(overrideSettings);
if (result != null) {
KLog.d(OneSignalPushService.class.getSimpleName(), "Notification displayed with id: " + result.androidNotificationId);
}
return true;
}
}
这在我的所有设备上都很好用,但:
我只在安装了Android牛轧糖的设备上收到了大量关于Crashlytics的问题:
致命异常:Android.app.RemoteServiceException:从包My.package发布了错误通知:无法展开以下内容的RemoteViews:StatusBarNotification(PKG=My.package User=UserHandle{0}ID=-1542711428 Tag=Null Key=0My.package-1542711428Null10184:notification(PRI=0 ContentView=Null震动=Null Sound=Null Defaults=0x0 Flags=0x19 Color=0xFF56A0D3 VIS=Public SemFlags=0x0
不幸的是,我不能用Android牛轧糖
在我的设备上复制这个问题,以了解我如何消除它。
我试图改变图形资源,如通知的图标,以清理项目,以遵循这个建议。
我注意到有这个问题的设备的数量增加了一个星期,当我发布了一个新版本的应用程序之后,这些数字减少到零。
我认为发生这种崩溃的原因是您的通知包含了对PendingIntent包中图标的整数引用,而该整数后来在发布到NotificationManager时被引用。
在获取整数引用和挂起的意图之间,应用程序被更新,所有可提取的引用都发生了变化。以前引用正确的drawable的整数现在引用了不正确的drawable或者根本没有(根本没有-导致了这次崩溃)
这一点可以从以下方面得到证明:
我在Android中做了这类通知,但不知怎么得到了以下类型的异常。请帮我解决这个问题。我已经为rootview使用了height 64dp,这是通知的自定义视图。然后使用notificationCompat生成器中的setContent设置此自定义视图。
这个问题以前有人问过,但没有一个答案帮助我因此张贴我的案件。 我正在尝试使用布局文件构建自定义通知。但我得到以下错误: Android.app.RemoteServiceException:从包com.eswaraj.app.eswaraj发布的错误通知:无法展开以下内容的RemoteViews:StatusBarNotification(pkg=com.eswaraj.app.eswaraj u
在清单文件中:
我正在使用reverfit进行api调用,我从服务器得到了几乎不到30KB大小的JSON响应。当JSON将响应解析为一个复杂对象时,它会抛出这个错误。 如果我尝试将响应存储在对象类中,然后通过LinkedHashMap获取值,我就能够获取数据。但是,这将是一个繁琐的过程。 有谁能帮我弄清楚这里的问题是什么,以及如何找到解决办法吗? 根据我的研究,这种情况只发生在版本>=牛轧糖的android设备上
当我尝试为通知使用一些自定义布局时,我遇到了一个令人作呕的例外。我已经裁剪了图像和2个文本视图的通知,以方便解决方案的查找,但它仍然不会工作。所有类似问题的建议都于事无补((( 这是广播接收机的代码: 在Nexus4@4.4.4上测试