package com.pleasantprogrammer.mpp; import android.app.AlarmManager import android.app.IntentService import android.app.PendingIntent import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.telephony.SmsManager import android.util.Log class SendService : IntentService("SendService") { companion object { val ACTION_SEND = "com.pleasantprogrammer.mpp.action.SEND" val ACTION_BOOT = "com.pleasantprogrammer.mpp.action.BOOT" val INTERVAL = 60 * 1000L fun makeSendIntent(ctx: Context): Intent { val intent = Intent(ACTION_SEND) intent.setClass(ctx, SendService::class.java) return intent } fun makeBootIntent(ctx: Context): Intent { val intent = Intent(ACTION_BOOT) intent.setClass(ctx, SendService::class.java) return intent } } val sharedPreferences: SharedPreferences by lazy { getSharedPreferences("store", Context.MODE_PRIVATE) } override fun onHandleIntent(intent: Intent) { if(intent.action == ACTION_SEND) { Log.i("SendService", "Sending request") val smsManager = SmsManager.getDefault() smsManager.sendTextMessage("5554", null, "GS99", null, null) sharedPreferences.edit().putLong("last_requested", System.currentTimeMillis()).commit() scheduleNext() } else if(intent.action == ACTION_BOOT) { Log.i("SendService", "Rescheduling because of restart") scheduleNext() } } fun scheduleNext() { val from = sharedPreferences.getLong("last_requested", -1) if(from < 0) return val pendingIntent = PendingIntent.getService( this, 0, makeSendIntent(this), PendingIntent.FLAG_ONE_SHOT ) val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager alarmManager.cancel(pendingIntent) alarmManager.set(AlarmManager.RTC_WAKEUP, from + INTERVAL, pendingIntent) } }