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

我正在尝试setLightColor使用从 JavaScript 接口返回的颜色进行更改。不幸的是,NotificationCompat.Builder(context, CHANNEL_ID).setLights对 API >= 26 绝对没有影响,所以我不能使用Intent.putExtra或类似的东西。


设置好之后还能改吗?我希望它是动态的。


编辑对我想要的东西似乎有一些误解。我不想碰那个Broadcast Reciever。它工作得很好。我想更改通知渠道。它不更新setLightColor(Color.___)。


在 protected void onCreate


String jobColor = someColor; // Will be filled in by other code - different colour every time

if (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";

@Override

public void onReceive(Context context, Intent intent) {

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 , new Intent(context, MainPage.class), 0);

    String jobColor = intent.getStringExtra("jobColor");


}

}


牧羊人nacy
浏览 185回答 2
2回答

holdtom

您无法在不删除频道的情况下以编程方式更改频道颜色通知、重要性等。因为用户可能已经手动更改了灯光颜色。以编程方式实现这一点,以获取频道并创建一个具有新 ID 的新频道。删除旧频道。如果使用以前的 id 创建频道,您的更改将不会反映供参考检查WhatsApp应用程序尝试从应用程序更改铃声并在左下角的频道中查看x频道已删除消息源Android 文档

茅侃侃

从 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);            }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java