gpt4 book ai didi

java - Android O - 通知 channel 和 NotificationCompat

转载 作者:IT老高 更新时间:2023-10-28 20:54:06 27 4
gpt4 key购买 nike

我无法改变这种感觉:Android 开发人员又想出了一些新的东西,让每个人都对他们认为如何使用该功能一无所知。

我说的是 Android O 中的通知 channel 。

多年来,我一直在使用兼容性支持库来避免处理特定的平台细节。即:NotificationCompat.

现在,Builder 要求我提供通知 channel ID,这很好,但完全让我一个人来创建这样的 channel 。我找不到任何对创建 channel 的兼容支持。我也找不到合理的方法在正确的位置创建它们。

文档只是声明它应该在“某处”完成并且“在发出通知时可能不会”。但我到底应该怎么做?我讨厌为简单的任务编写特定于版本的东西——这就是我使用兼容库的原因。

有人对如何处理它有建议吗?每次我想要显示通知时都进行创建是否“昂贵”?

最佳答案

这是我在 Android O 上生成通知并保持向后兼容性的解决方案:

        String idChannel = "my_channel_01";
Intent mainIntent;

mainIntent = new Intent(context, LauncherActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mainIntent, 0);

NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

NotificationChannel mChannel = null;
// The id of the channel.

int importance = NotificationManager.IMPORTANCE_HIGH;

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, null);
builder.setContentTitle(context.getString(R.string.app_name))
.setSmallIcon(getNotificationIcon())
.setContentIntent(pendingIntent)
.setContentText(context.getString(R.string.alarm_notification) + ManagementDate.getIstance().hourFormat.format(getAlarm(context, 0)));

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mChannel = new NotificationChannel(idChannel, context.getString(R.string.app_name), importance);
// Configure the notification channel.
mChannel.setDescription(context.getString(R.string.alarm_notification));
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mNotificationManager.createNotificationChannel(mChannel);
} else {
builder.setContentTitle(context.getString(R.string.app_name))
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setColor(ContextCompat.getColor(context, R.color.transparent))
.setVibrate(new long[]{100, 250})
.setLights(Color.YELLOW, 500, 5000)
.setAutoCancel(true);
}
mNotificationManager.notify(1, builder.build());

关于java - Android O - 通知 channel 和 NotificationCompat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com