Notification without “heads up”

这一生的挚爱 提交于 2019-12-10 10:55:28

问题


I am trying to create a notification that has a high priority (a chatting app) but my client requested that there will be no "heads up" view for it.

I have tried creating an empty layout for a RemoteViews to set as the Notification.headsUpContentView but still nothing.

Here is what I've tried:

    Intent target = new Intent(this, PushConsumedBroadcastReceiver.class);
    target.putExtra(PushConsumedBroadcastReceiver.PUSH_TYPE, PushConsumedBroadcastReceiver.PUSH_TYPE_REMINDER);

    PendingIntent pending = PendingIntent.getBroadcast(this, Constants.REQUEST_CODE_BASE, target, PendingIntent.FLAG_UPDATE_CURRENT);
    Notification notification = new Notification.Builder(this).setContentIntent(pending)
    .setContentTitle(item.getNotificationText())
    .setStyle(new BigTextStyle().bigText(item.getNotificationText()).setSummaryText("thepoosh looks good"))
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setSmallIcon(R.drawable.g_icon_white)
    .setPriority(Notification.PRIORITY_MAX)
    .setTicker(item.getNotificationText())
    .build();

    if(VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
        notification.headsUpContentView = new RemoteViews(getPackageName(), R.layout.empty_heads_up);
    }
    notification.sound = null;
    notification.ledARGB = 0;
    notification.vibrate = new long[0];

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.notify(CODE_ONE_DAY_REMINDER, notification);

empty_heads_up.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" />

回答1:


If you insist on using PRIORITY_MAX, you can disable the Heads-Up notification using the following code starting with API 21:

notification.headsUpContentView = new RemoteViews(Parcel.obtain());



回答2:


Displaying a heads up notification is a part of the definition of a high-priority notification:

If a notification's priority is flagged as High, Max, or full-screen, it gets a heads-up notification.

If you don't want a heads-up notification, you do not want a high-priority notification.

Note that you users can opt to disable heads up notifications or lower the priority of your notifications themselves, but this is an option solely for the user.



来源:https://stackoverflow.com/questions/31923375/notification-without-heads-up

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!