android 通知渠道适配 和 渠道分组 和 通知铃声
知识整理我一直在找 渠道分组的 内容,网上一圈都是复制粘贴。官方文档只说了怎么用。最后整理 在此记录。概念通知渠道 NotificationChannelAPI-26以后 需要先创建 通知渠道 才能发送通知渠道分组 NotificationChannelGroup将 通知渠道分组归类创建 分类 和 渠道的示例一般 只会用到 渠道 。分类可以忽略。但是渠道太多时 可使用分类更好的描述。在原生goog
·
知识整理
我一直在找 渠道分组的 内容,网上一圈都是复制粘贴。官方文档只说了怎么用。
最后整理 在此记录。
概念
通知渠道 NotificationChannel
API-26以后 需要先创建 通知渠道 才能发送通知
渠道分组 NotificationChannelGroup
将 通知渠道分组归类
创建 分类 和 渠道的示例
一般 只会用到 渠道 。分类可以忽略。但是渠道太多时 可使用分类更好的描述。
在原生google上 分类描述能很好的标识当前分类是干啥用的。但是在国内定制rom或其他第三方rom上 看起来就有点问题了。
//通知渠道
public final static String CHANNEL_1 = "a_xxx";
public final static String CHANNEL_2 = "a_xxx_xxx";
public final static String CHANNEL_3 = "b_xxx";
public final static String CHANNEL_4 = "c_xxx";
//渠道分组
public final static String CHANNEL_GROUP_A = "a_group_xxx";
public final static String CHANNEL_GROUP_B = "b_group_xxx";
//通知服务
NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
//构造渠道分组
NotificationChannelGroup group_a = new NotificationChannelGroup(CHANNEL_GROUP_A, "分组A");
NotificationChannelGroup group_b = new NotificationChannelGroup(CHANNEL_GROUP_B, "分组B");
//设置渠道分组的描述
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
group_a.setDescription("这是分组A的描述");
group_b.setDescription("这是分组B的描述");
}
//统一创建渠道分组
manager.createNotificationChannelGroup(group_a);
manager.createNotificationChannelGroup(group_b);
//构造通知渠道
//自定义铃声1
Uri uri = Uri.parse("android.resource://" + AppConst.getInstance().getPackageName() + "/" + R.raw.xxx);
AudioAttributes att = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).build();
//通知渠道1
NotificationChannel channel_1 = new NotificationChannel(CHANNEL_1, "xxx", NotificationManager.IMPORTANCE_HIGH);
channel_1.enableVibration(true);//启用震动
channel_1.setVibrationPattern(new long[]{1000, 1000, 1000});//设置震动模式
channel_1.enableLights(true);//启用呼吸灯
channel_1.setSound(uri, att);//启用自定义铃声
//自定义铃声2
Uri bellUri = Uri.parse("android.resource://" + AppConst.getInstance().getPackageName() + "/" + R.raw.xxx_xxx);
AudioAttributes bellAtt = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).build();
//通知渠道2
NotificationChannel channel_2 = new NotificationChannel(CHANNEL_2, "xxx_2", NotificationManager.IMPORTANCE_HIGH);
channel_2.enableVibration(true);//启用震动
channel_2.setVibrationPattern(new long[]{2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000});//设置震动模式
channel_2.enableLights(true);//启用呼吸灯
channel_2.setSound(bellUri, bellAtt);//启用自定义铃声
//通知渠道3
NotificationChannel channel_3 = new NotificationChannel(CHANNEL_3, "xxx_3", NotificationManager.IMPORTANCE_MIN);
channel_id_download.enableVibration(false);//关闭震动
channel_id_download.enableLights(false);//关闭呼吸灯
channel_id_download.setSound(null, null);//设置铃声为空
//通知渠道4
NotificationChannel channel_4 = new NotificationChannel(CHANNEL_4, "xxx_4", NotificationManager.IMPORTANCE_MIN);
channel_4.enableVibration(false);//关闭震动
channel_4.enableLights(false);//关闭呼吸灯
channel_4.setSound(null, null);//设置铃声为空
//设置组 需要放在 创建渠道之前
channel_1.setGroup(CHANNEL_GROUP_A);
channel_2.setGroup(CHANNEL_GROUP_B);
channel_3.setGroup(CHANNEL_GROUP_B);
channel_4.setGroup(CHANNEL_GROUP_B);
//统一创建渠道
manager.createNotificationChannel(channel_1);
manager.createNotificationChannel(channel_2);
manager.createNotificationChannel(channel_3);
manager.createNotificationChannel(channel_4);
//删除之前的渠道
manager.deleteNotificationChannel(CHANNEL_xxx);
manager.deleteNotificationChannel(CHANNEL_xxxxx);
}
更多推荐
已为社区贡献3条内容
所有评论(0)