Android中自定义Notification通知标题不显示问题如何解决
问题根因
- 未适配Android 8.0+的通知渠道要求:你仅给通知Builder传入了渠道ID
"number",但没有提前向系统注册该通知渠道。高版本Android系统会默认使用渠道的内置配置,覆盖你代码中设置的contentTitle参数,部分定制ROM甚至会直接屏蔽自定义标题内容。 - 变量未做空值防护:如果用户未点击提交按钮就直接触发计数逻辑,
maxTitle还未完成赋值,此时传入setContentTitle()的是空值,系统会直接隐藏通知标题栏。 - 未适配高版本通知权限:Android 13及以上系统要求应用动态申请
POST_NOTIFICATIONS权限,未授权的情况下通知会被限制展示完整内容。
修复步骤
- 第一步:在
onCreate方法中添加通知渠道注册逻辑,必须在构造通知前完成注册
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 新增:注册通知渠道,适配Android 8.0+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String channelId = "number"; CharSequence channelName = "计数阈值提醒"; String channelDesc = "计数达到设定阈值时推送提醒"; int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel channel = new NotificationChannel(channelId, channelName, importance); channel.setDescription(channelDesc); NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } // 原有初始化逻辑 minTitle1 = (EditText) findViewById(R.id.minTitle1) ; maxTitle1 = (EditText) findViewById(R.id.maxTitle1) ; // 给maxTitle设置初始默认值,避免空值 maxTitle = "已达到最高计数阈值"; // ... 原有其他逻辑 }
- 第二步:构造通知时添加空值判断,同时设置通知优先级保证内容正常展示
if (highestText == count+1 ) { NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this, "number"); // 新增空值判断,避免空标题 builder.setContentTitle(TextUtils.isEmpty(maxTitle) ? "已达到最高计数阈值" : maxTitle); builder.setContentText("please be aware that you reached the maximum number"); builder.setSmallIcon(R.drawable.ic_launcher_background); builder.setAutoCancel(true); // 新增:设置高优先级,保证通知弹出时展示完整内容 builder.setPriority(NotificationCompat.PRIORITY_HIGH); NotificationManagerCompat managerCompat = NotificationManagerCompat.from(MainActivity.this); managerCompat.notify(1, builder.build()); }
- 第三步:适配Android 13+通知权限
首先在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
在Activity启动时检查权限,未授权则动态申请,用户同意后通知才能正常展示完整内容。
内容的提问来源于stack exchange,提问作者user13133459
相关产品推荐
相关产品推荐

