JobScheduler / JobService通知Kotlin Android

问题描述

我希望通知在特定时间每隔几个小时弹出一次。我必须为此使用JobSchedule吗?

这是我的AlarmReciver

    class AlarmReceiver: BroadcastReceiver() {

companion object {
    const val ID = "CHANEL_ID"
    const val chanelName = "CHANEL_NAME"
}

override fun onReceive(context: Context?,intent: Intent?) {

    val manager = context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    val channelNotification: NotificationCompat.Builder = NotificationCompat.Builder (context,ID)
        .setContentTitle("Powiadomienie!")
        .setContentText("Weź tabletkę!")
        .setSmallIcon(R.drawable.ic_launcher_background)

    val channel = NotificationChannel(ID,chanelName,NotificationManager.IMPORTANCE_HIGH)

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        manager.createNotificationChannel(channel)
        manager.notify(1,channelNotification.build())
    }
}

这是我的 MainActivity

class MainActivity : AppCompatActivity(),TimePickerDialog.OnTimeSetListener,DatePickerDialog.OnDateSetListener {

private var minute = 0
private var hour = 0
private var dayOfMonth = 0
private var month = 0
private var year = 0

private lateinit var alarmManager: AlarmManager
private lateinit var alarmIntent: PendingIntent


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

    alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmIntent = PendingIntent.getBroadcast(applicationContext,Intent(applicationContext,AlarmReceiver::class.java),0)

    btn.setOnClickListener {
        val dialog = MyTimePickerDialog()
        dialog.show(supportFragmentManager,"time_picker")
    }

    btnDate.setOnClickListener {
        val dialog = MyDatePickerDialog()
        dialog.show(supportFragmentManager,"date_picker")
    }

    btninfo.setOnClickListener {

        val date = Calendar.Builder()
            .setDate(year,month,dayOfMonth)
            .setTimeOfDay(hour,minute,0)
            .build()

       Toast.makeText(applicationContext,"$year-${month+1}-$dayOfMonth//$hour:$minute",Toast.LENGTH_SHORT).show()
        alarmManager.set(AlarmManager.RTC_WAKEUP,date.timeInMillis,alarmIntent)
    }




}


override fun onTimeSet(view: TimePicker?,hourOfDay: Int,minute: Int) {
  this.minute = minute
    this.hour = hourOfDay
}

override fun onDateSet(view: DatePicker?,year: Int,month: Int,dayOfMonth: Int) {
    this.year = year
    this.month = month
    this.dayOfMonth = dayOfMonth
}


}

我的JobService类

class MyJobService: JobService() {
    override fun onStartJob(p0: JobParameters?): Boolean {
        TODO("Not yet implemented")
    }

    override fun onStopJob(p0: JobParameters?): Boolean {
        TODO("Not yet implemented")
    }
}

我该如何实现,以便不时弹出在不同类中创建的通知?

感谢gelp

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...