完整代码如下

package ai.aitek.cattserverimport ai.aitek.gattserver.Rimport android.app.*import android.content.Intentimport android.os.IBinderimport android.os.Buildimport android.support.v4.app.NotificationCompatimport java.util.*class ForegroundService : Service() {    override fun onBind(p0: Intent?): IBinder? {        return null    }    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {        val pendingIntent = PendingIntent.getActivity(applicationContext,                0,                Intent(applicationContext, GattServerActivity::class.java),                PendingIntent.FLAG_UPDATE_CURRENT);//这里第二个参数可以用于后边根据不同的消息设置不同的点击事件        var mBuilder: NotificationCompat.Builder? = null        val notificationManager = applicationContext.getSystemService(Service.NOTIFICATION_SERVICE) as NotificationManager        if (Build.VERSION.SDK_INT >= 26) {            val channel = NotificationChannel("YOUR_CHANNEL_ID001", "YOUR_CHANNEL_NAME", NotificationManager.IMPORTANCE_HIGH)            notificationManager.createNotificationChannel(channel)            mBuilder = NotificationCompat.Builder(applicationContext, "YOUR_CHANNEL_ID001")        } else {            mBuilder = NotificationCompat.Builder(applicationContext);        }        mBuilder.setContentTitle("GattServer标题")//设置通知栏标题                  .setContentText("GattServer内容")//设置通知栏显示内容//                            .setContent(contentViews)//                            .setNumber(20)//设置通知集合的数量                  .setTicker("通知来啦")//通知首次出现在通知栏,带上升动画效果的                  .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间                  .setPriority(Notification.PRIORITY_DEFAULT)//设置该通知优先级                  .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消                    .setOngoing(false)//true,设置他为一个正在进行的通知                  .setDefaults(Notification.DEFAULT_ALL)//向通知添加声音、闪灯和振动效果的最简单        //设置通知小ICON          try {            mBuilder.setSmallIcon(R.mipmap.cattserver);        } catch (e: Exception) {            e.printStackTrace();        }        mBuilder.setContentIntent(pendingIntent);        notificationManager.notify(UUID.randomUUID().hashCode(), mBuilder.build());        return super.onStartCommand(intent, flags, startId);    }}

不适配的话会报以下错误

android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notification

更多相关文章

  1. 5张图片解决android studio报错:Failed to resolve: com.android.
  2. Android之自定义最简单的竖向引导页
  3. 自定义React Native Modal,支持全屏弹框
  4. uniapp自定义弹窗组件|Modal模态框|Loading加载框
  5. android listview仿iphone弹簧特效
  6. 样式表以及Color.xml文件『Android系列六』
  7. Android(安卓)L中六个人性化功能
  8. Android(安卓)点击通知栏消息 跳转到指定的Fragment界面
  9. Android实现多个跑马灯效果,多个文本框TextView的跑马灯

随机推荐

  1. 作用域 常用函数 三元运算符及if条件
  2. Flink 数据持久化踩过的坑
  3. 用户表、商品表、订单表
  4. Redis实现分布式锁
  5. Java中的 9 个处理Exception的最佳实践,你
  6. 抽象类与接口、后期静态绑定与魔术方法简
  7. HTTP的恋爱史
  8. 23 个非常实用的 Shell 拿来就用脚本实例
  9. dblink不稳定造成 cursor: pin s wait on
  10. 新人和老人关于数据思维的50个区别