我正在使用此代码显示通知,但是setAutoCancel(true)无效,因为当我按下通知打开应用程序时,通知仍然在通知栏上,我必须用手指手势手动删除它用于删除通知或使用通知栏中的全部清除按钮。
它在android 4.4.2设备中运行良好,但它在我的nexus 7 5.1.1中不起作用
有什么问题?
private void generateNotification(Context context, String message) {
Intent intent = new Intent(GCMListenerService.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
String appName = context.getResources().getString(R.string.app_name);
int width;
int height;
if (Util.checkAndroidVersionUpperOrEqualThan(11)){
width = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width);
height = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_height);
}else{
width = 64;
height = 64;
}
image = Bitmap.createScaledBitmap(image, width, height, false);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(image)
.setContentTitle(appName)
.setContentText(message)
.setSound(defaultSoundUri)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message));
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());
}
答案 0 :(得分:0)
您必须使用.setOngoing(true)设置Notification标志
val builder = NotificationCompat.Builder(context, channelId)
builder.setOngoing(true)
notification = builder.build()
notification.flags = Notification.FLAG_ONGOING_EVENT