簡體   English   中英

為什么鎖定屏幕上沒有顯示我的通知的公開版本?

[英]Why isn't the public version of my notification displayed on the lock screen?

我正在使用NotificationCompat的v7來構建通知。 我希望它有一個公共版本,鎖定屏幕的信息較少,以及一個私人版本,當手機解鎖時,可以獲得通知列表的更多信息。 android開發者文檔中的說明非常簡單......但它們並不適合我。 即使在鎖定屏幕上,我也一直得到私人版本。

有人可以告訴我我做錯了什么嗎?

我在我的三星Galaxy S6上運行Android版本6.0.1,對於我的通知的私有版本,我通過RemoteViews類設置自定義視圖。

這是我的代碼:

NotificationCompat.Builder publicNotificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                .setContentTitle(expense.name)
                .setContentText(expense.amount)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.wally_icon)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.wally_icon)
                .setContent(remoteViews)
                .setVisibility(NotificationCompat.VISIBILITY_PRIVATE)
                .setPublicVersion(publicNotificationBuilder.build())
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
notificationManager.notify((int)expense.id, notificationBuilder.build());

我不確定究竟是什么修復它,但它現在只使用標准通知操作為我工作。 這就是我所擁有的:

Intent saveAmountIntent = new Intent(context, SaveAmountReceiver.class);
Intent changeAmountIntent = new Intent(context, ChangeAmountReceiver.class);
saveAmountIntent.putExtra("expenseId", expense.id);
changeAmountIntent.putExtra("expenseId", expense.id);
PendingIntent saveAmountPendingIntent = PendingIntent.getBroadcast(context, 0, saveAmountIntent, 0);
PendingIntent changeAmountPendingIntent = PendingIntent.getBroadcast(context, 0, changeAmountIntent, 0);

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder publicNotificationBuilder = (NotificationCompat.Builder) this.createBaseNotification(context, expense, saveAmountPendingIntent)
    .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) this.createBaseNotification(context, expense, saveAmountPendingIntent)
    .setVisibility(NotificationCompat.VISIBILITY_PRIVATE)
    .setPublicVersion(publicNotificationBuilder.build())
    .addAction(new NotificationCompat.Action.Builder(R.drawable.change_icon, context.getString(R.string.change), changeAmountPendingIntent).build())
    .addAction(new NotificationCompat.Action.Builder(R.drawable.save_icon, context.getString(R.string.save), saveAmountPendingIntent).build());
notificationManager.notify((int)expense.id, notificationBuilder.build());

我的基本通知功能:

private NotificationCompat.Builder createBaseNotification(Context context, Expense expense, PendingIntent deleteIntent) {
    return (NotificationCompat.Builder) new NotificationCompat.Builder(context)
        .setContentTitle(expense.name)
        .setContentText(expense.amount)
        .setDeleteIntent(deleteIntent)
        .setAutoCancel(false)
        .setSmallIcon(R.drawable.my_notif_icon)
        .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM