Я создал класс Alarm и аннотировал его как Entity в Android Studio. В этом классе я поместил переменную id в качестве первичного ключа сущности, и он генерируется автоматически.
@Entity(tableName = "alarm_data_table")
class Alarm(
@ColumnInfo(name = "alarm_hour")
var alarmHour: Int,
@ColumnInfo(name = "alarm_min")
var alarmMin: Int,
@ColumnInfo(name = "is_am")
var isAM: Boolean,
var days: ArrayList<Int>?,
@ColumnInfo(name = "is_on")
var isOn: Boolean,
var label: String,
@PrimaryKey(autoGenerate = true)
val id: Int = 0
) {
fun setAlarmSchOnOff(isOn: Boolean, activity: Activity){
if (isOn){setAlarmScheduleOn(activity)}
if (!isOn){setAlarmScheduleOff(activity)}
}
fun setAlarmScheduleOn (activity: Activity) {
val alarmManager = activity.getSystemService(Context.ALARM_SERVICE) as AlarmManager
Log.d("ALARM ON", Integer.toString(id))
val alarmIntent = Intent(activity, AlarmReceiver::class.java).let { intent ->
intent.putExtra(Constants().ALARM_LABEL_KEY,label)
PendingIntent.getBroadcast(
activity,
id,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)
}
val calendar: Calendar = Calendar.getInstance().apply {
timeInMillis = System.currentTimeMillis()
set(Calendar.HOUR_OF_DAY, alarmHour)
set(Calendar.MINUTE, alarmMin)
}
days?.let {
it.forEach {
calendar.set(Calendar.DAY_OF_WEEK, it) }
alarmManager.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
AlarmManager.INTERVAL_HOUR,
alarmIntent
)
} ?:run{
alarmManager.set(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
alarmIntent)
}
}
fun setAlarmScheduleOff(activity: Activity) {
val alarmManager = activity.getSystemService(Context.ALARM_SERVICE) as AlarmManager
Log.d("ALARM OFF", Integer.toString(alarmId))
val alarmIntent = Intent(activity, AlarmReceiver::class.java).let { intent ->
PendingIntent.getBroadcast(
activity,
id,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)}
alarmManager.cancel(alarmIntent)
}
}
Проблема в том, что каждый раз, когда я пытался получить идентификатор для метода setAlarm, он всегда будет возвращать 0.
2019-10-30 15:38:07.441 11066-11066/com.andreasgift.myclock D/ALARM ON: 0
Есть ли способ вернуть значение идентификатора после того, как сущность обновит значение / успешно вставит его в таблицу.