繁体   English   中英

通知中添加的操作图标未显示

[英]Action icon added in notification not showing up

在此处输入图像描述

我正在尝试为来电创建通知。 为此,我在通知中添加了两个操作。 仅显示我的操作文本。通知中不显示操作图标。 我想在答案附近添加图标并取消我在通知中添加为 AddAction 的图标。 我添加了如下所示的操作图标,


NotificationCompat.Action answerAction = new NotificationCompat.Action.Builder(R.drawable.answer_call_icon, "Answer", pendingIntent).build();
            NotificationCompat.Action cancelAction = new NotificationCompat.Action.Builder(R.drawable.cancel, "Cancel", pendingIntent).build();

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
                .setLargeIcon((BitmapFactory.decodeResource(getResources(), R.drawable.call_logo)))
                .setContentTitle(intent.getStringExtra("Number"))
                .setSmallIcon(R.drawable.call_logo)
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)
                .setFullScreenIntent(pendingIntent, true)
                .setCategory(NotificationCompat.CATEGORY_CALL)
                .addAction(answerAction)
                .addAction(cancelAction)
                .setPriority(NotificationCompat.PRIORITY_HIGH);
        NotificationManagerCompat nManager = NotificationManagerCompat.from(this);
        nManager.notify(2,builder.build());

还有一个查询,下面是我的通知渠道,

NotificationChannel   chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_HIGH);
            chan.setLightColor(Color.BLUE);
           chan.setLockscreenVisibility(Notification.FLAG_FOREGROUND_SERVICE);
            chan.setImportance(NotificationManager.IMPORTANCE_HIGH);
            chan.setSound(defaultRingToneUri,audioAttributes);
 chan.enableLights(true);
            chan.shouldShowLights();
            chan.setVibrationPattern(vibrate);
            chan.enableVibration(true);
            Context context=getApplicationContext();
            NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            assert manager != null;
            manager.createNotificationChannel(chan);

接收通知时无法获得铃声。 我设置声音的方式是否正确? 任何人都请帮我解决这个问题... 2天前发布..但直到现在无法找到解决方案。

根据Android N 博客文章中的通知

通知操作也进行了重新设计,现在位于通知下方的一个视觉上单独的栏中。

您会注意到新通知中没有图标; 相反,在通知栏的受限空间中为标签本身提供了更多空间。 但是,通知操作图标仍然是必需的,并且会继续在旧版本的 Android 和 Android Wear 等设备上使用。

因此,预计您不会看到与通知操作相关的图标。

如果您在创建通知布局时需要更大的灵活性,请选择自定义布局。

参考: https ://developer.android.com/training/notify-user/custom-notification

使用 Drawable left/right 选项在按钮中设置带有文本的图标。

// Get the layouts to use in the custom notification
RemoteViews notificationLayout = new RemoteViews(getPackageName(), R.layout.notification_small);
RemoteViews notificationLayoutExpanded = new RemoteViews(getPackageName(), R.layout.notification_large);

// Apply the layouts to the notification
Notification customNotification = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.notification_icon)
        .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
        .setCustomContentView(notificationLayout)
        .setCustomBigContentView(notificationLayoutExpanded)
        .build();

据我了解:您的通知有问题,您可以使用此方法:

 private void showSmallNotification(NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) {

    NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
    inboxStyle.addLine(message);

    Notification notification;
    notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0)
            .setAutoCancel(true)
            .setContentTitle(title)
            .setContentIntent(resultPendingIntent)
            .setSound(alarmSound)
            .setStyle(inboxStyle)
            .setWhen(getTimeMilliSec(timeStamp))
            .setContentText(message)
            .build();

    NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(Constant.NOTIFICATION_ID, notification);
}

或者这个:

 private void showBigNotification(Bitmap bitmap, NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) {
    NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle();
    bigPictureStyle.setBigContentTitle(title);
    bigPictureStyle.setSummaryText(Html.fromHtml(message).toString());
    bigPictureStyle.bigPicture(bitmap);
    Notification notification;
    notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0)
            .setAutoCancel(true)
            .setContentTitle(title)
            .setContentIntent(resultPendingIntent)
            .setSound(alarmSound)
            .setStyle(bigPictureStyle)
            .setWhen(getTimeMilliSec(timeStamp))

            .setContentText(message)
            .build();

    NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(Constant.NOTIFICATION_ID_BIG_IMAGE, notification);
}

要播放铃声,您可以使用 android mediaplayer,如下所示:

Var _mediaPlayer = MediaPlayer.Create(this,
Android.Provider.Settings.System.DefaultRingtoneUri);
_mediaPlayer.Start();
Task.Delay(60 * 1000).ContinueWith(t => _mediaPlayer?.Stop()); //stop after 60sec

您可以获取 _mediaPlayer 的全局实例并根据用户与通知的交互来停止它。

这是 c# xamarin android 示例,您可以使用具有 java 语法的相同类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM