4

我正在尝试在标题栏中显示带有长文本的通知。

    PendingIntent contentIntent = PendingIntent.getActivity(context,
            NOTIFICATION_ID, notificationIntent,
            PendingIntent.FLAG_ONE_SHOT);
    NotificationManager nm = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
            context);
    builder.setContentIntent(contentIntent)
            .setSmallIcon(R.drawable.icon_push).setTicker(alert)
            .setContentTitle(title).setContentText(alert)
            .setWhen(System.currentTimeMillis()).setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        builder.setStyle(new NotificationCompat.BigTextStyle()
                .bigText(title));
    }
    Notification n = builder.build();
    nm.notify(id, n);

但是builder.setStyle(new NotificationCompat.BigTextStyle() .bigText(title));

似乎什么也没做,setStyle我在 android 4.1 上测试它

4

3 回答 3

7

你应该删除这个:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {

因为这是兼容的,所以它会自动设置正确。

这是 100% 的工作代码:

        NotificationManager notificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
            this);
    builder.setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("titletitletitletitletitletitletitletitletitletitletitletitle").setContentText("contentcontentcontentcontentcontentcontentcontent")
            .setWhen(System.currentTimeMillis()).setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
            .setStyle(new NotificationCompat.BigTextStyle()
                    .bigText("bigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbigbig"));

    Notification notification = builder.build();
    notificationManager.notify(1, notification);
于 2013-10-30T15:50:22.970 回答
1

如果您的变量名称是正确的并且您的变量命名title只是标题,那么您的问题是您使用的是bigText(title)而不是bigText(aReallyBigText);

于 2013-10-30T15:49:39.273 回答
0

使用:Notification.Builder(context).setFullScreenIntent(pendingIntent, true),手动让通知全屏

于 2016-06-23T09:43:38.783 回答