Служба сигнализации не работает (Android Oreo) - PullRequest
0 голосов
/ 30 августа 2018

У меня проблема. Пользователь устанавливает таймер, а служба сигнализации отправляет смс в установленное время. Если сборщик мусора съест мое приложение, то служба сигнализации отправит смс. Но это не работает в Oreo. Что я могу сделать, чтобы решить проблему? Мой код работает до Oreo:

Manifest:

    <service android:name="com.kostya500steam.device.service.StartSaunaService"
        android:enabled="true"/>
    <service android:name="com.kostya500steam.device.service.StopSaunaService"
        android:enabled="true"/>

SmsSender:

@SuppressLint("SimpleDateFormat", "NewApi")
private fun initStartAlarm() {
    val phoneNo = settings.getString(NUMBER_VALUE, "")
    val message = settings.getString(INPUT_CMD_TURN_ON, "")
    val intentStart = Intent(context, StartSaunaService::class.java)

    val bundle = Bundle()
    bundle.putCharSequence(NUMBER_VALUE, phoneNo)
    bundle.putCharSequence(INPUT_CMD_TURN_ON, message)
    intentStart.putExtras(bundle)
    val pendingIntent = PendingIntent.getService(context, 0, intentStart, 0)
    val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
    Log.e("AAA", "before = ${settings.getString(BEFORE_TIMER, " ")}")
    alarmManager.setExact(AlarmManager.RTC_WAKEUP,
            SimpleDateFormat("yyyy-MM-dd HH:mm")
                    .parse(settings.getString(BEFORE_TIMER, "")).time, pendingIntent)
}

Услуги:

override fun onStart(intent: Intent?, startId: Int) {
    super.onStart(intent, startId)
    intent?.let {
        val bundle = intent.extras
        val phoneNo = bundle.getCharSequence(NUMBER_VALUE) as String
        val message = bundle.getCharSequence(INPUT_CMD_TURN_ON) as String
        Log.e("AAA", "Sms включения ушла")
        SmsManager.getDefault().sendTextMessage("+$phoneNo", null, message, null, null)
    }
}
...