Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AlarmManager无法呼叫我的广播接收器_Java_Android_Broadcastreceiver_Alarmmanager - Fatal编程技术网

Java 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

我正在尝试制作提醒应用程序,但我的广播接收器没有接到AlarmManager的任何电话

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电缆连接状态,直到预期的警报时间?或者您是否设置了将来太远的警报?