2017-01-01 29 views
1

私はNotificationCompatのv7を使用して通知を作成しています。ロック画面の情報が少ないパブリックバージョンと、電話機のロックが解除されたときに利用可能な通知リストの詳細情報を含むプライベートバージョンが必要です。アンドロイドのデベロッパー向けドキュメントに記載されている手順はかなり単純です...しかし、彼らは私のために働いていません。私はロック画面でも、プライベートバージョンを常に取得します。私の通知の公開バージョンがロック画面に表示されないのはなぜですか?

私が間違っていることを教えてもらえますか?

私はSamsung 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()); 
+0

公共の通知のみを担保lockscreesのためである、パターンやピンが必要になりi.e.one、あなたがロックされていますか? –

+0

私の指紋で私のロックを解除する必要がありますが、ロック画面としてカウントされると思います。 – SnoopDougg

+0

はい、私は持っていませんが、 –

答えて

0

私はそれを修正し、正確かわからないんだけど、それだけで、標準の通知アクションを使用して、今私のために働いています。ここで私が持っているものです。

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)); 
} 
関連する問題