1

我在我的应用程序中集成了通知,我处理了 2 种情况:使用 NotificationCompat.Builder 的 Pre Jelly bean 通知,以及使用 builder 的 Post Jelly bean 通知。这使我能够在后果冻豆版本中管理大文本和动作,并且可以工作 2 或 3 次,但奇怪的是,今天我在 JB 及以下版本中得到了相同的结果。

Pre JB 代码:

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pint = PendingIntent.getActivity(context, 0, notificationIntent, 0);

    NotificationCompat.Builder notif = new NotificationCompat.Builder(context)
    .setContentTitle(nMessage.getTitle())
    .setContentText(nMessage.getMessage())
    .setTicker(nMessage.getTitle())
    .setWhen(when)
    .setPriority(NotificationCompat.PRIORITY_HIGH)
    .setSmallIcon(R.drawable.ic_ttd_petales)
    .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
    .setAutoCancel(true)
    .setContentIntent(pint);
    notification= notif.build();
    notificationManager.notify(0, notification);

JB及以上代码:

Builder bigTextNotification = new Notification.Builder(context)
        .setContentTitle(nMessage.getTitle())
        .setTicker(nMessage.getTitle())
        .setContentText(nMessage.getMessage())
        .setWhen(when)
        .setPriority(Notification.PRIORITY_HIGH)
        .setSmallIcon(R.drawable.ic_ttd_petales)
        .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
        .setAutoCancel(true)
        .setContentIntent(pint);
        if(nMessage.getHasPhone()){
        Intent iCall = new Intent(Intent.ACTION_CALL,Uri.parse(nMessage.getPhone()));
        PendingIntent pintCall = PendingIntent.getActivity(context, 0, iCall, Intent.FLAG_ACTIVITY_NEW_TASK);
        bigTextNotification.addAction(R.drawable.ic_menu_call, context.getResources().getString(R.string.call_ttd), pintCall);
    }

    String[] recipients = new String[]{context.getResources().getString(R.string.default_email)};
    String subject = context.getResources().getString(R.string.about_offer);

    Intent iEmail = new Intent(android.content.Intent.ACTION_SEND);
    iEmail.setType("text/html"); 
    iEmail.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
    iEmail.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
    PendingIntent pintEmail = PendingIntent.getActivity(context, 1, iEmail, Intent.FLAG_ACTIVITY_NEW_TASK);
    bigTextNotification.addAction(R.drawable.ic_menu_compose, context.getResources().getString(R.string.call_ttd), pintEmail);

    Notification notif = new Notification.BigTextStyle(bigTextNotification)
    .bigText(nMessage.getMessage())
    .build();
    notificationManager.notify(1000, notif);

你有没有遇到过这样的行为或者我错过了什么?

4

2 回答 2

1

我有类似的经历:我会发送通知,它会显示内容文本而不是大文本。然后当我拔下 USB 时,它会显示展开的大文本。

现在请注意,当您插入 USB 时,您会收到一个持续的通知:“已作为媒体设备连接”。看看你是否在其他一些持续通知中得到相同的行为,例如“使用 GPS 搜索”。我愿意。(我的测试设备是三星 Galaxy Rush,它的垂直空间非常有限。)

因此,虽然 Android通知文档说只有顶部通知显示为展开状态,但看起来还有另一条规则:

如果通知列表空间不足,它甚至会折叠最顶部的通知。

您可以通过双指或单指拖动来展开折叠的通知,具体取决于操作系统版本。

于 2013-12-19T15:50:55.613 回答
0

对于这个愚蠢的问题,我很抱歉,我不是使用模拟器来测试这个应用程序,而是真正的手机,奇怪的是,当插入 USB 调试电缆时,通知 (JB) 中没有任何动作,拔掉插头时,我们让我们的按钮工作:) 这解决了我的问题,但我不知道这种行为。

于 2013-02-13T15:44:36.873 回答