You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android heads-up/横幅通知在Nexus S(API 29)设备无法生效问题

横幅通知不生效解决方案(适配Android 10/API 29)

核心问题排查点

  • 通知渠道配置错误:API 26及以上系统的通知优先级由渠道配置决定,你代码只传了CHANNEL_ID,但未提前创建高优先级的通知渠道,单个通知设置的PRIORITY_HIGH不会生效
  • 重复调用setDefaults导致配置被覆盖:代码中连续两次调用setDefaults,第二次设置的DEFAULT_SOUND会覆盖第一次的DEFAULT_ALL,导致默认振动、提示灯配置丢失
  • 缺少悬浮通知权限:Android 10及以上原生系统,高优先级通知要弹出横幅,需要应用开启「悬浮通知」权限(部分定制ROM叫「横幅通知」/「悬浮窗显示通知」权限)

修正后实现步骤

1. 提前创建高优先级通知渠道

要在发送通知前调用,推荐放在Application的onCreate方法中执行:

// 仅API 26及以上需要创建渠道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    CharSequence channelName = "高优先级通知渠道";
    String channelDesc = "用于展示横幅通知";
    // 重点:渠道重要性设置为IMPORTANCE_HIGH,才会触发横幅弹出
    int importance = NotificationManager.IMPORTANCE_HIGH;
    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, channelName, importance);
    channel.setDescription(channelDesc);
    // 开启渠道的声音、振动、提示灯
    channel.enableLights(true);
    channel.setLightColor(Color.RED);
    channel.enableVibration(true);
    channel.setVibrationPattern(new long[]{1000, 1000, 1000});
    NotificationManager notificationManager = getSystemService(NotificationManager.class);
    notificationManager.createNotificationChannel(channel);
}

2. 修正通知构造代码

删除重复的setDefaults调用,调整配置:

Context applicationContext = getApplicationContext();    
NotificationCompat.Builder builder = new NotificationCompat.Builder(applicationContext, CHANNEL_ID)
        .setDefaults(NotificationCompat.DEFAULT_ALL) // 保留这一行即可,包含声音、振动、系统提示音
        .setSmallIcon(R.drawable.ic_account_circle)
        .setContentTitle(notificationTitle)
        .setContentText(notificationTextBody)
        .setPriority(NotificationCompat.PRIORITY_HIGH) // 兼容API 25及以下版本
        .setLights(Color.RED, 3000, 3000)
        // 可选:设置点击跳转PendingIntent,避免通知点击无响应
        .setContentIntent(pendingIntent);

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(applicationContext);
int notificationId = new Random().nextInt();
notificationManager.notify(notificationId, builder.build());

3. 检查应用通知权限

前往系统设置→应用→找到你的应用→通知→找到你创建的对应渠道,确认:

  • 通知总开关已开启
  • 「悬浮通知」/「横幅通知」开关已开启
  • 声音、振动开关均按需求开启

补充说明

如果按照上述步骤配置后仍不生效,可卸载应用重装触发渠道重置(通知渠道创建后无法通过代码修改优先级,卸载重装才能更新已创建的渠道配置)。

内容的提问来源于stack exchange,提问作者Theodor Samson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:54:03