Я пытаюсь изменить setLightColor
цветом, возвращаемым из интерфейса JavaScript.К сожалению, NotificationCompat.Builder(context, CHANNEL_ID).setLights
не имеет абсолютно никакого влияния на API> = 26, поэтому я не могу использовать Intent.putExtra
или что-то подобное.
Возможно ли даже изменить его после того, как оно уже установлено?Я хотел бы, чтобы это было динамичным.
РЕДАКТИРОВАТЬ Кажется, есть некоторое неправильное представление о том, что я хочу.Я не хочу трогать Broadcast Reciever
.Работает просто отлично.Я хочу изменить канал уведомлений.Он не обновляется setLightColor(Color.___)
.
In 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);
}
My 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");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setSmallIcon(R.drawable.ic_stat_name)
.setContentTitle("Upcoming Shift!")
.setContentText("Shift at " + intent.getStringExtra("jobName") + " on " + intent.getStringExtra("jobDate") + " at " + intent.getStringExtra("jobTime"))
.setStyle(new NotificationCompat.BigTextStyle().bigText("You have a shift at " + intent.getStringExtra("jobName") + " on " + intent.getStringExtra("jobDate") + " at " + intent.getStringExtra("jobTime")))
.setLights(Color.parseColor(jobColor), 10000, 1000)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(12345, mBuilder.build());
}
}