我正在Android上实施本地通知,我遇到的问题是它们没有出现在Android 6.0(Samsung S7)上。 我正在寻找解决方案,但我找不到任何解决这个问题的方法。我在适当的res / drawable文件夹中有图标,我也定义了通知标题,文本,铃声(原始文件夹),但它没有显示... 有我的代码:
Context acontext = getApplicationContext();
PackageManager pm = acontext.getPackageManager();
Intent notificationIntent = pm.getLaunchIntentForPackage(acontext.getPackageName());
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(acontext, 0, notificationIntent, 0);
int notification_icon = acontext.getResources().getIdentifier("icon", "drawable", acontext.getPackageName());
int notificationID = 0;
// Build notification
Notification noti = new Notification.Builder(acontext)
.setContentTitle("Title")
.setContentText("Incoming text")
.setSmallIcon(notification_icon)
.setContentIntent(pendingIntent)
.setLights(Color.RED, 1, 1)
.build();
NotificationManager notificationManager = (NotificationManager) acontext.getSystemService(Context.NOTIFICATION_SERVICE);
// hide the notification after its selected
noti.sound = Uri.parse("android.resource://" + acontext.getPackageName() + "/raw/incoming");
noti.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(notificationID, noti);
有没有其他人遇到过这个问题?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:3)
新通知有一些变化。不推荐使用新的NotificationCompat.Builder(this)
,并且上面的android oreo需要NotificationChannel
。你可以尝试这个解决方案。
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(mContext.getApplicationContext(), "notify_001");
Intent ii = new Intent(mContext.getApplicationContext(), RootActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, ii, 0);
NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
bigText.bigText(verseurl);
bigText.setBigContentTitle("Title");
bigText.setSummaryText("Text in detail");
mBuilder.setContentIntent(pendingIntent);
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
mBuilder.setContentTitle("Your Title");
mBuilder.setContentText("Your text");
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setStyle(bigText);
NotificationManager mNotificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("notify_001",
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
mNotificationManager.createNotificationChannel(channel);
}
mNotificationManager.notify(0, mBuilder.build());
答案 1 :(得分:1)
在Android中显示通知涉及多个层,请首先检查该设置是否适用于相同OS版本的其他设备。通常,这类问题是特定于设备的,不是特定于操作系统的,还请检查通知日志how to check notification logs in android ?
如果问题是特定于设备的,则以下为便捷提示:
答案 2 :(得分:0)
必须启用Google Play服务才能在您的Android设备上接收推送通知。如果启用了Google Play服务并且常规故障排除步骤尚未解决问题,则可能需要重置应用。要重置应用程序,请转到设置→应用程序→PagerDuty,然后点击清除数据。
对于Android 6.0及更高版本,请确保将应用设置为优先模式下的优先级应用。
对于Android 6.0及更高版本,请检查应用程序是否被Doze模式静音。
答案 3 :(得分:0)
检查android版本,相应地为>设置图标6.0和其他。对于6.0版本,我们需要白色背景图标。
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
icon = R.mipmap.your_logo_for_Lolipop;
}else{
icon = R.drawable.your_logo_for_Kitkat ;
}