4

優先度の高い通知 (チャット アプリ) を作成しようとしていますが、クライアントから「ヘッドアップ」ビューがないことを要求されました。

RemoteViewsとして設定するための空のレイアウトを作成しようとしましたNotification.headsUpContentViewが、まだ何もありません。

これが私が試したことです:

    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" />
4

2 に答える 2

1

どうしても使用しPRIORITY_MAXたい場合は、API 21 以降の次のコードを使用して、Heads-Up 通知を無効にすることができます。

notification.headsUpContentView = new RemoteViews(Parcel.obtain());
于 2015-08-10T16:18:49.063 に答える
1

ヘッドアップ通知の表示は、優先度の高い通知の定義の一部です。

通知の優先度が高、最大、またはフルスクリーンとしてフラグ付けされている場合、ヘッドアップ通知を受け取ります。

ヘッドアップ通知が必要ない場合は、優先度の高い通知は必要ありません。

ユーザーは、ヘッドアップ通知を無効にしたり、通知の優先度を下げたりすることができますが、これはユーザー専用のオプションです。

于 2015-08-10T16:05:21.727 に答える