8

現在、Android Support Package v4 Rev 10のNotificationCompat機能を調べています。ドキュメントには、「setContentText()」が通知の2行目を示していると記載されています。これは、API8からAPI15までに当てはまります。ただし、API 16でこのメソッドを使用しようとすると、通知で2行目が失われます。タイトルだけが表示され、2行目は表示されません。複数行を追加しても問題ありません('addline()'を使用)。

使用したNotificationCompat.Builderのコードは次のとおりです。

private NotificationCompat.Builder buildNormal(CharSequence pTitle) {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
            getSherlockActivity());

    builder.setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL);
    // set the shown date
    builder.setWhen(System.currentTimeMillis());
    // the title of the notification
    builder.setContentTitle(pTitle);
    // set the text for pre API 16 devices
    builder.setContentText(pTitle);
    // set the action for clicking the notification
    builder.setContentIntent(buildPendingIntent(Settings.ACTION_SECURITY_SETTINGS));
    // set the notifications icon
    builder.setSmallIcon(android.R.drawable.stat_sys_download_done);
    // set the small ticker text which runs in the tray for a few seconds
    builder.setTicker("This is your ticker text.");
    // set the priority for API 16 devices
    builder.setPriority(Notification.PRIORITY_DEFAULT);
    return builder;
}

また、複数の行を追加して通知を表示する場合は、次のコードを使用します。

NotificationCompat.Builder normal = buildNormal("This is an Expanded Layout Notification.");
    NotificationCompat.InboxStyle big = new NotificationCompat.InboxStyle(
            normal);

    // summary is below the action
    big.setSummaryText("this is the summary text");
    // Lines are above the action and below the title
    big.addLine("This is the first line").addLine("The second line")
            .addLine("The third line").addLine("The fourth line");

    NotificationManager manager = getNotificationManager(normal);
    manager.notify(Constants.NOTIFY_ID, big.build());

これはJellyBeanの必要な機能ですか、setContentTextは無視されますか、それとも何かが足りませんか?コードはすべてのバージョンでエラーなしで実行されますが、ICS以前で使用したものと同じコードで2行目を追加したいと思います。

また、2つのスクリーンショットを追加しました。1つ目はICS4.0.3Huawei MediaPadからのもので、2つ目は4.1.1を搭載したGalaxyNexusからのものです。1から2行目は、簡単にするために通知タイトルと同じ文字列です。2では表示されません。

よろしくお願いします!

ICS4.0.3デバイス JellyBean4.1.1デバイス

4

3 に答える 3

7

これはJellyBeanの必要な機能ですか、setContentTextは無視されますか、それとも何かが足りませんか?

の値はsetContextText()、折りたたまれた状態で表示される必要があります(たとえば、展開されている場合は2本の指で上にスワイプするか、最上位にしないでくださいNotification)。NotificationCompat.InboxStyle上記のコードを指定すると、展開された状態で置き換えられます。

于 2012-08-16T14:05:08.840 に答える
1

通知をデフォルトで展開状態で表示したい場合は、ビルダーのPRIORITY_MAXを設定するだけです。次のように:builder.setPriority(Notification.PRIORITY_MAX);

于 2016-04-04T04:31:29.647 に答える
0

@CommonsWareのヘルプを使用してこの問題を修正し、現在のAPIレベルをチェックして、使用するコマンドを決定する簡単なメソッドを作成しました。

private void createCompatibleSecondLine(CharSequence pTitle,
        NotificationCompat.Builder pBuilder, InboxStyle pInboxStyle) {
    // set the text for pre API 16 devices (or for expanded)
    if (android.os.Build.VERSION.SDK_INT < 16) {
        pBuilder.setContentText(pTitle);
    } else {
        pInboxStyle.setSummaryText(pTitle);
    }
}

だから、それはワイルドで完璧にはほど遠いものではありませんが、それは私のために仕事をします。改善はいつでも歓迎です:)

于 2012-08-17T13:44:09.530 に答える