Java 恢复警报会导致应用程序崩溃

Java 恢复警报会导致应用程序崩溃,java,android,android-intent,broadcastreceiver,android-broadcast,Java,Android,Android Intent,Broadcastreceiver,Android Broadcast,我想做的事;用户使用DatePicker选择一个他希望收到通知的日期,然后我将名称、id、发布日期和alertTime(从用户选择的时间转换而来的毫秒时间)添加到报警数据库中,该数据库名为myAlarmsDB,是一个简单的SQL。当OnReceive()方法调用它时,我从数据库中删除条目,除了关闭设备外,一切正常;警报无法恢复,使我的应用程序崩溃,没有堆栈跟踪。知道有什么问题吗 public class AlertReceiver extends BroadcastReceiver {

我想做的事;用户使用DatePicker选择一个他希望收到通知的日期,然后我将名称、id、发布日期和alertTime(从用户选择的时间转换而来的毫秒时间)添加到报警数据库中,该数据库名为myAlarmsDB,是一个简单的SQL。当OnReceive()方法调用它时,我从数据库中删除条目,除了关闭设备外,一切正常;警报无法恢复,使我的应用程序崩溃,没有堆栈跟踪。知道有什么问题吗

public class AlertReceiver extends BroadcastReceiver {
    String name = "";
    int id = 0;
    String releaseDate = "";
    // Called when a broadcast is made targeting this class
    @Override
    public void onReceive(Context context, Intent intent) {

        Intent intActivity = new Intent(context, MainActivity.class);
        intActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intActivity);

        if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Toast.makeText(context, "BOOT" , Toast.LENGTH_LONG).show();
            // Set the alarm here.
            Intent alertIntent = new Intent(context, AlertReceiver.class);
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

            for (Alarm alarm : MyApp.myAlarmsDB.getAllData()) {
                alertIntent.putExtra("id", Integer.parseInt(alarm.get_id()));
                alertIntent.putExtra("name", alarm.get_name());
                alertIntent.putExtra("releaseDate", alarm.get_releaseDate());
                PendingIntent pendingIntent = PendingIntent.getBroadcast(context, Integer.parseInt(alarm.get_id()), alertIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                alarmManager.set(AlarmManager.RTC_WAKEUP, Long.valueOf(Integer.parseInt(alarm.get_alertTime())), pendingIntent);
            }
        }

        id = intent.getIntExtra("id", -1);
        name = intent.getStringExtra("name");
        releaseDate = intent.getStringExtra("releaseDate");

        //delete from database
        MyApp.myAlarmsDB.deleteFromId(String.valueOf(id)); 
    }
}
我如何设置闹钟

public void setAlarm(View view) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, yearDate);
    cal.set(Calendar.MONTH, monthDate);
    cal.set(Calendar.DAY_OF_MONTH, dayDate);
    long alertTime = cal.getTimeInMillis();

    Intent alertIntent = new Intent(this, AlertReceiver.class);
    // store id
    alertIntent.putExtra("id", mainId);
    alertIntent.putExtra("name", name);
    alertIntent.putExtra("releaseDate", releaseDate);

    Alarm alarm = new Alarm(String.valueOf(mainId), name, releaseDate, String.valueOf(alertTime));
    MyApp.myAlarmsDB.addAlarm(alarm);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, mainId, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, pendingIntent);
}
权限:

<receiver android:name=".AlertReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>


有什么想法吗?如果有人能给我一个我所要求的代码模板?我肯定你的应用程序不会在没有堆栈跟踪的情况下崩溃。检查logcat(但不要过滤它,因为您可能会错过一些重要的内容)。然后在这里发布你的stacktrace。我没有过滤它,在我的logcat中我有无过滤器选项,甚至尝试了所有选项,但仍然没有stacktrace。你知道吗?如果有人能给我一个我所要求的代码模板?我肯定你的应用程序不会在没有堆栈跟踪的情况下崩溃。检查logcat(但不要过滤它,因为您可能会错过一些重要的内容)。然后在这里发布你的stacktrace。我没有过滤它,在我的logcat中,我有无过滤器选项,甚至尝试了所有选项,但仍然没有stacktrace。