Java AlarmManager无法呼叫我的广播接收器
我正在尝试制作提醒应用程序,但我的广播接收器没有接到AlarmManager的任何电话Java AlarmManager无法呼叫我的广播接收器,java,android,broadcastreceiver,alarmmanager,Java,Android,Broadcastreceiver,Alarmmanager,我正在尝试制作提醒应用程序,但我的广播接收器没有接到AlarmManager的任何电话 public void setUpReminder(Reminder reminder){//Method to setup Reminder //String content = dbhandler.getContent(reminder.getDeadline()); String content = dbhandler.getContent(reminder.getName().toSt
public void setUpReminder(Reminder reminder){//Method to setup Reminder
//String content = dbhandler.getContent(reminder.getDeadline());
String content = dbhandler.getContent(reminder.getName().toString());
System.out.println(date_string);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,Receiver.class);
intent.putExtra("content",content);
PendingIntent intent2 = PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Integer.valueOf(date_string.substring(0,4)),Integer.valueOf(date_string.substring(5,7)), Integer.valueOf(date_string.substring(8,10)),Integer.valueOf(date_string.substring(11,13)),Integer.valueOf(date_string.substring(14,16)));
//calendar.set(2019,Integer.valueOf(date_string.substring(5,7)), Integer.valueOf(date_string.substring(8,10)),Integer.valueOf(date_string.substring(11,13)),Integer.valueOf(date_string.substring(14,16)));
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),intent2);
}
这是广播接收机的代码
package com.example.reminderapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String content = intent.getStringExtra("content");
System.out.println(content);
Intent callRinger = new Intent(context.getApplicationContext(),ReminderActivity.class);
callRinger.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callRinger.putExtra("content",content);
context.startActivity(callRinger);
}
}
我甚至在我的AndroidManifest.xml中添加了Receiver
<receiver android:process=":remote" android:name=".Receiver" />
请告诉我我做错了什么。当您这样做时:
calendar.set(Integer.valueOf(date_string.substring(0,4)),
Integer.valueOf(date_string.substring(5,7)),
Integer.valueOf(date_string.substring(8,10)),
Integer.valueOf(date_string.substring(11,13)),
Integer.valueOf(date_string.substring(14,16)));
我假设您的日期字符串类似于2019-12-18T08:55
。如果是这种情况,您的闹钟没有响的原因是由于月份字段。Calendar
类希望月份字段以零为基础(即:值0-11),但您的date\u字符串
将月份字段以一为基础(即:1-12)
要测试此理论,请尝试硬编码值并测试报警是否触发,例如:
calendar.set(2019,11,31,09,05)
t这些值将日历设置为2019.12.31 09:05(请注意,月份字段比实际月份数少一个)执行此操作时:
calendar.set(Integer.valueOf(date_string.substring(0,4)),
Integer.valueOf(date_string.substring(5,7)),
Integer.valueOf(date_string.substring(8,10)),
Integer.valueOf(date_string.substring(11,13)),
Integer.valueOf(date_string.substring(14,16)));
我假设您的日期字符串类似于2019-12-18T08:55
。如果是这种情况,您的闹钟没有响的原因是由于月份字段。Calendar
类希望月份字段以零为基础(即:值0-11),但您的date\u字符串
将月份字段以一为基础(即:1-12)
要测试此理论,请尝试硬编码值并测试报警是否触发,例如:
calendar.set(2019,11,31,09,05)
t这些值将日历设置为2019.12.31 09:05(请注意,月份字段比实际月份数少一个)android:process=“:remote可以删除此项,然后重试。在预期的报警时间之前,您是否保持设备屏幕打开+USB电缆连接?或者您是否设置了将来太远的警报?android:process=“:remote可以删除此警报,然后重试。您是否将设备屏幕保持在+USB电缆连接状态,直到预期的警报时间?或者您是否设置了将来太远的警报?