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

     2023-03-14     97

关键词:

【中文标题】通知通道 - 设置后是不是可以更改 LightColor?【英文标题】:Notification Channel - Is It Possible to Change LightColor After It's Been Set?通知通道 - 设置后是否可以更改 LightColor? 【发布时间】:2019-04-16 02:58:28 【问题描述】:

我正在尝试使用从 JavaScript 接口返回的颜色更改 setLightColor。不幸的是,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");

    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());


【问题讨论】:

每次当您想更新当前内容时更新通知。 【参考方案1】:

如果不删除频道,您将无法以编程方式更改频道颜色通知、重要性等。

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

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

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

来源Android Doc

【讨论】:

是的,就是这样。我想可能还有另一种方式。谢谢。【参考方案2】:

来自 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);
            

【讨论】:

这会引发错误,因为 getNotificationChannel 在第一次运行时变为 null。我只是将getNotificationChannel(CHANNEL_ID) 放在 if 中,然后它就运行了。但是,这无论如何都不起作用。 if 中有一个 sys.out,所以我可以判断 if 是否运行,它确实运行。但颜色变化不适用。

是否可以将 redis 键空间通知推送到 redis 流而不是 pub/sub 通道

】是否可以将redis键空间通知推送到redis流而不是pub/sub通道【英文标题】:Canrediskeyspacenotificationsbepushedtotheredisstreaminsteadofpub/subchannel【发布时间】:2019-01-1010:59:31【问题描述】:我们有一个要求,即我们需要收到有关Redis数据结... 查看详情

Android 通知通道说明

...找到用户在他的手机上实际可以看到此描述信息的位置?是不是只 查看详情

即使在 Android 中更改后,通知声音也不会从默认值更改

】即使在Android中更改后,通知声音也不会从默认值更改【英文标题】:Notificationsoundisn\'tchangingfromdefault,evenafterchanginginAndroid【发布时间】:2021-11-2204:31:34【问题描述】:我一直在尝试更改通知的声音,但它根本没有改变。它在... 查看详情

Worklight 6.2 - 推送通知 - 是不是可以更改 userSubscription.userId?

】Worklight6.2-推送通知-是不是可以更改userSubscription.userId?【英文标题】:Worklight6.2-PushNotification-IsitpossibletochangeuserSubscription.userId?Worklight6.2-推送通知-是否可以更改userSubscription.userId?【发布时间】:2015-04-1310:17:51【问题描述】... 查看详情

reactjs DOM更新后是不是有可能收到通知?

】reactjsDOM更新后是不是有可能收到通知?【英文标题】:reactjsisitpossibletogetanotificationaftertheDOMisupdated?reactjsDOM更新后是否有可能收到通知?【发布时间】:2017-01-2717:35:19【问题描述】:我有一个组件可以呈现多达一千个元素的列... 查看详情

如何在 Android O 中动态更改通知声音

】如何在AndroidO中动态更改通知声音【英文标题】:HowtochangenotificationsounddynamicallyinAndroidO【发布时间】:2018-09-1108:02:17【问题描述】:最近我使用通知通道来支持androidO。但问题是我无法动态更改声音Uri。我们的应用程序具有通... 查看详情

加载在线网页后是不是可以更改 UIWebView 的比例?

】加载在线网页后是不是可以更改UIWebView的比例?【英文标题】:IsitpossibletochangethescaleofUIWebViewafterloadinganonlinewebpage?加载在线网页后是否可以更改UIWebView的比例?【发布时间】:2011-09-2803:20:47【问题描述】:我希望用户捏住我... 查看详情

Android 8.1.0 API 27:如何注册以接收有关您应用的通知设置更改的广播?

】Android8.1.0API27:如何注册以接收有关您应用的通知设置更改的广播?【英文标题】:Android8.1.0API27:howtoregistertoreceivebroadcastsaboutyourapp\'sNotificationSettingsChanges?【发布时间】:2021-03-0620:08:01【问题描述】:任何人都可以建议Android8.1... 查看详情

在设置中禁用后,推送通知是不是会发送到 Android 手机?

】在设置中禁用后,推送通知是不是会发送到Android手机?【英文标题】:Arepushnotificationsdeliveredtoandroidphonesafteritsdisabledinsettings?在设置中禁用后,推送通知是否会发送到Android手机?【发布时间】:2017-08-1618:33:31【问题描述】:... 查看详情

注册充值后如何设置金笛网关通道

通过网关通道发短信,第一步需要安装web中间件,第二步在网关服务注册激活、充值,然后对网关进行设置就可以实现发短信,以下是对网关的设置。第一步:网关服务注册激活、充值,之前已经介绍过具体步骤,在这里不重复... 查看详情

注册充值后如何设置金笛网关通道

通过网关通道发短信,第一步需要安装web中间件,第二步在网关服务注册激活、充值,然后对网关进行设置就可以实现发短信,以下是对网关的设置。第一步:网关服务注册激活、充值,之前已经介绍过具体步骤,在这里不重复... 查看详情

网络推送通知的权限更改是不是有任何回调?

】网络推送通知的权限更改是不是有任何回调?【英文标题】:Isthereanycallbackonpermissionchangeforwebpushnotification?网络推送通知的权限更改是否有任何回调?【发布时间】:2016-08-3009:17:18【问题描述】:假设用户将权限设置为allow以... 查看详情

Android 8 通知通道的默认优先级

】Android8通知通道的默认优先级【英文标题】:DefaultpriorityofnotificationchannelonAndroid8【发布时间】:2018-02-0911:04:53【问题描述】:我正在将目标SDK版本更改为26并尝试使用通知渠道。我有一些通知,我想在通知栏中隐藏图标。默认... 查看详情

android通知——notification(代码片段)

Android通知——Notification创建通道在显示通知之前必须先设置通道,这是必须前提。可以在此对此通道的通知进行基本的设置,例如是否显示呼吸灯、是否震动、优先级等。代码大概长这样:/***创建通知渠道(8.0... 查看详情

门户更改后推送通知不起作用

】门户更改后推送通知不起作用【英文标题】:Pushnotificationsnotworkingafterportalchanges【发布时间】:2012-10-1514:01:56【问题描述】:我最近在我们的AppleDev门户上更改了以下内容。我之前问过这个,但不是很清楚我改变了什么。我正... 查看详情

加载后是不是可以更改 UITabBarController 文本颜色?

】加载后是不是可以更改UITabBarController文本颜色?【英文标题】:IsitpossibletochangeaUITabBarControllertextcolorafterit\'sbeenloaded?加载后是否可以更改UITabBarController文本颜色?【发布时间】:2017-02-2205:12:15【问题描述】:我想在UITabBarControl... 查看详情

是否可以在应用程序安装时更改默认通知警报样式?

】是否可以在应用程序安装时更改默认通知警报样式?【英文标题】:IsitpossibletochangethedefaultnotificationAlertStyleuponapplicationinstall?【发布时间】:2012-03-0620:47:32【问题描述】:当我安装我的应用程序然后转到设置的通知部分时,警... 查看详情

Flutter中FCM的自定义通知通道

】Flutter中FCM的自定义通知通道【英文标题】:CustomnotificationchannelforFCMinflutter【发布时间】:2020-08-2602:57:12【问题描述】:我正在尝试自定义firebase_messaging的通知声音。在前台,我正在实施flutter_local_notifications包以在我设置了自... 查看详情