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

Android Studio添加Notification时出现开发者警告问题求助

Android通知功能点击按钮后异常提示的解决方法

我尝试给App添加Notification功能,编写代码后点击Button时出现一条提示信息,相关代码如下:

Kotlin代码

package com.example.notifsimple

import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.NotificationCompat
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val id = 1234

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btnNotif.setOnClickListener{

            val notification = NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.android)
                .setContentTitle("New Animal")
                .setContentText("a new ")
                .build()


            val mNotificationCompat = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

            mNotificationCompat.notify(id, notification)

        }

    }
}

布局XML代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnNotif"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Notification"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

问题原因及修复方案

问题出在Android 8.0(API级别26)及以上版本强制要求为通知创建渠道,你的代码缺少渠道创建逻辑,导致系统无法正常显示通知,触发异常提示。

修改后的完整代码如下:

package com.example.notifsimple

import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.NotificationCompat
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val id = 1234
    private val CHANNEL_ID = "animal_notification_channel"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 提前创建通知渠道(仅Android 8.0+生效)
        createNotificationChannel()

        btnNotif.setOnClickListener{
            val notification = NotificationCompat.Builder(this, CHANNEL_ID)
                .setSmallIcon(R.drawable.android)
                .setContentTitle("New Animal")
                .setContentText("a new animal arrived!")
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .build()

            val mNotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            mNotificationManager.notify(id, notification)
        }
    }

    private fun createNotificationChannel() {
        // 仅在Android 8.0及以上版本执行渠道创建
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val channelName = "Animal Notifications"
            val channelDesc = "Notifications for new animal updates"
            val importance = NotificationManager.IMPORTANCE_DEFAULT
            val channel = NotificationChannel(CHANNEL_ID, channelName, importance).apply {
                description = channelDesc
            }
            // 注册渠道到系统
            val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            notificationManager.createNotificationChannel(channel)
        }
    }
}

关键修改点说明

  1. 添加createNotificationChannel()方法,针对Android 8.0+系统创建通知渠道,渠道是系统管理通知的必要组件;
  2. 修改NotificationCompat.Builder的构造参数,新增渠道ID,将通知与创建的渠道绑定;
  3. 补充了通知优先级设置,可根据需求调整为PRIORITY_HIGH等不同级别。

内容的提问来源于stack exchange,提问作者Husam Abu Zina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:35:21