4

我正在使用 v13 支持库。我使用通知生成器和 .setProgress 构建进度通知。它在 4.2.2 设备上运行良好,但在 2.3.5 上没有显示。

这是正常行为吗?

mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

mBuilder = new NotificationCompat.Builder(this);

mBuilder.setContentTitle("Photo Upload")
            .setContentText("Upload in progress")
            .setSmallIcon(R.drawable.ic_action_upload)
            .setOngoing(true);

.
.

mBuilder.setProgress(100, prog, false);
mNotifyManager.notify(sNotificationID, mBuilder.build());
4

2 回答 2

1

似乎不支持 Gingerbread(及以下),也没有记录。
这是来自支持库的实际代码,它创建了一个实例Notification

static class NotificationCompatImplBase implements NotificationCompatImpl {
    public Notification build(Builder b) {
        Notification result = (Notification) b.mNotification;
        result.setLatestEventInfo(b.mContext, b.mContentTitle,
                b.mContentText, b.mContentIntent);
        // translate high priority requests into legacy flag
        if (b.mPriority > PRIORITY_DEFAULT) {
            result.flags |= FLAG_HIGH_PRIORITY;
        }
        return result;
    }
}

唯一可行的选择是使用自定义RemoteView. 您可能希望查看 Android 源代码以获取示例进度通知布局。

于 2013-08-10T14:05:38.320 回答
0

它在 4.2.2 设备上运行良好,但在 2.3.5 上没有显示

Android 1.x 和 2.x(尤其是 Gingerbread)需要NotificationcontentIntent(也是空的)。所以创建这样的空动作:

PendingIntent action = PendingIntent.getBroadcast(<context>, 0, 
                                new Intent(), PendingIntent.FLAG_UPDATE_CURRENT);
...
mBuilder.setContentIntent(action);

现在它应该可以工作了。

于 2013-08-10T14:15:59.550 回答