android 通知(android 8.0可用)
val CHANNEL_ID = "com.chao.channel.id"; val CHANNEL_NAME = "com.chao.channel.name"; val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager var builder = null //判断是否需要开启通道 if(shouldCreateNowPlayingChannel()){ //在这里开启通道 createNowPlayingChannel() } if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O){ builder = Notification.Builder(this) }else{ builder = new Notification.Builder(this,Config.CHANNEL_ID) } notification = builder.build() mManager.notify(555, notification)
部分机型使用IMPORTANCE_LOW MIN NONE仍然发出提示音问题,修改channelId,可以解决
//判断是否需要创建通道 private fun shouldCreateNowPlayingChannel() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !nowPlayingChannelExists() //android8.0及以上才能调用 判断当前通道是否存在 //manager.getNotificationChannle(key) 如果通道已开启就能获取到 否则获取为null @RequiresApi(Build.VERSION_CODES.O) private fun nowPlayingChannelExists() = manager.getNotificationChannel(CHANNEL_NAME) != null @RequiresApi(Build.VERSION_CODES.O) private fun createNowPlayingChannel() { /** * Oreo不用Priority了,用importance * IMPORTANCE_NONE 关闭通知 * IMPORTANCE_MIN 开启通知,不会弹出,但没有提示音,状态栏中无显示 * IMPORTANCE_LOW 开启通知,不会弹出,不发出提示音,状态栏中显示 * IMPORTANCE_DEFAULT 开启通知,不会弹出,发出提示音,状态栏中显示 * IMPORTANCE_HIGH 开启通知,会弹出,发出提示音,状态栏中显示 */ val notificationChannel = NotificationChannel( CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH ) .apply { description = "test" } manager.createNotificationChannel(notificationChannel) }
分类:
android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端