为了账号安全,请及时绑定邮箱和手机立即绑定

通知通道 - 设置后是否可以更改 LightColor?

通知通道 - 设置后是否可以更改 LightColor?

牧羊人nacy 2022-01-19 09:19:33
我正在尝试setLightColor使用从 JavaScript 接口返回的颜色进行更改。不幸的是,NotificationCompat.Builder(context, CHANNEL_ID).setLights对 API >= 26 绝对没有影响,所以我不能使用Intent.putExtra或类似的东西。设置好之后还能改吗?我希望它是动态的。编辑对我想要的东西似乎有一些误解。我不想碰那个Broadcast Reciever。它工作得很好。我想更改通知渠道。它不更新setLightColor(Color.___)。在 protected void onCreateString jobColor = someColor; // Will be filled in by other code - different colour every timeif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {    CharSequence name = "Channel_Name";    String description = "Channel_Description";    int importance = NotificationManager.IMPORTANCE_HIGH;    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);    channel.setDescription(description);    channel.enableLights(true);    channel.setLightColor(Color.parseColor(jobColor)); // Dynamically set from above    channel.enableVibration(true);    NotificationManager notificationManager = getSystemService(NotificationManager.class);    notificationManager.createNotificationChannel(channel);}我的 BroadcastReciever -我相信 setLight 不适用于 API 26 或更高版本public class AlarmReceiver extends BroadcastReceiver {private final String CHANNEL_ID = "some_channel";@Overridepublic void onReceive(Context context, Intent intent) {    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 , new Intent(context, MainPage.class), 0);    String jobColor = intent.getStringExtra("jobColor");}}
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您无法在不删除频道的情况下以编程方式更改频道颜色通知、重要性等。

因为用户可能已经手动更改了灯光颜色。

以编程方式实现这一点,以获取频道并创建一个具有新 ID 的新频道。删除旧频道。如果使用以前的 id 创建频道,您的更改将不会反映

供参考检查WhatsApp应用程序尝试从应用程序更改铃声并在左下角的频道中查看x频道已删除消息

Android 文档


查看完整回答
反对 回复 2022-01-19
?
茅侃侃

TA贡献1842条经验 获得超21个赞

从 createNotificationChannel() 描述:


这也可用于恢复已删除的频道并更新现有频道的 * 名称、描述、组和/或重要性。


所以你可以试试这个:


  NotificationManager notificationManager = getSystemService(NotificationManager.class);

            //find created channel

            NotificationChannel channel = notificationManager.getNotificationChannel("id");

            if (channel != null){

                //set new color

                channel.setLightColor(0);

                //update channel

                notificationManager.createNotificationChannel(channel);

            }


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信