![](/img/trans.png)
[英]Notification status bar text not appearing on Notification Tray, but the icon does appear
[英]Android: The notification does not appear on the screen, only the icon in the status bar Oreo
您好我寫了一個類來創建通知,但問題是狀態欄中出現通知圖標,通知塊沒有出現甚至在鎖定屏幕中。 在doc中,它被編寫為使用NotificationManagerCompat
來顯示通知( Docs鏈接 )。 這是我的代碼:
public class NotificationsService {
private Context mContext;
private NotificationManager mNotificationManager;
public NotificationsService(Context context) {
mContext = context;
}
public void sendNotification(int iconResource) {
Notification notification = buildNotification(iconResource);
// mNotificationManager.notify(0 /* ID of notification */, notification);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext);
notificationManager.notify(70, notification);
}
public Notification buildNotification(int iconResource) {
String CHANNEL_ID = "type"; // The id of the channel.
CharSequence channelName = "dsfsf";
NotificationChannel channel = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
channel = new NotificationChannel(CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_DEFAULT);
}
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mContext, CHANNEL_ID)
.setSmallIcon(iconResource)
.setContentTitle("title")
.setContentText("message")
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setSound(defaultSoundUri)
.setChannelId(CHANNEL_ID);
// .setContentIntent(pendingIntent);
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && mNotificationManager != null) {
mNotificationManager.createNotificationChannel(channel);
}
return notificationBuilder.build();
}
並使用這樣:
NotificationsService notif = new NotificationsService(context);
notif.sendNotification(R.mipmap.ic_launcher);
僅顯示應用程序圖標,並且僅在狀態欄中顯示通知
您需要通知通知管理員您的通知。 我開發了一種為Oreo或上層SDK生成通知的方法。
在代碼中使用正確的參數調用此方法...
//This method is for Oreo
@RequiresApi(api = Build.VERSION_CODES.O)
public static void createSimpleNotificationForOreo(Context context, PendingIntent pendingIntent, String notificationTitle, String notificationContent, int notificationId, String notificationChannelId) {
Notification.BigTextStyle bigText = new Notification.BigTextStyle();
bigText.bigText(notificationContent);
bigText.setBigContentTitle(notificationTitle);
Notification.Builder notificationBuilder = new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_small_notification)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.setColor(context.getResources().getColor(R.color.colorPrimary))
.setContentText(notificationContent)
.setStyle(bigText)
.setChannelId(notificationChannelId)
.setContentIntent(pendingIntent);
Notification notification = notificationBuilder.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel mChannel = new NotificationChannel(notificationChannelId, NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
notificationManager.notify(notificationId, notification);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.