Android 广播接收机不';将代码移动到另一个项目后无法工作

Android 广播接收机不';将代码移动到另一个项目后无法工作,android,Android,我已经看完了整个代码,一切似乎都正常工作,没有错误,因此更难找到解决方案 我已将代码移到另一个项目 这是我的广播接收机课程: public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Notification.Builder builder = new Notification.Builder

我已经看完了整个代码,一切似乎都正常工作,没有错误,因此更难找到解决方案

我已将代码移到另一个项目

这是我的广播接收机课程:

public class MyBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Notification.Builder builder = new Notification.Builder(context);
    builder.setContentTitle(intent.getStringExtra("Next"));
    builder.setContentText(intent.getStringExtra("String"));
    builder.setSmallIcon(R.drawable.notify);

    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(325, builder.build());
}
}
我在我的主要活动中这样称呼它:

    private void notifyUser() {
    Intent intent = new Intent(this, MyBroadcastReceiver.class);
    intent.putExtra("Next", getResources().getString(R.string.lesson_next));

    int days_int = (sun) ? 1:2;

    for (int i = 0; i < days_length; i++) {
        Calendar[] calendars = getCalendars(i, days_int + i);
        ArrayList<String> arrayList = schedules.get(i);
        for (int j = 0; j < calendars.length; j++) {
            String s = arrayList.get(j);
            if (!s.equals(getResources().getString(R.string.lesson_window))) {
                intent.putExtra("String", s);
                notifyUserTag(intent, 135124 + count, calendars[j].getTimeInMillis());
                count++;
            }
        }
    }
}

private void notifyUserTag(Intent intent, int id, long currentTimeMillis) {
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            this.getApplicationContext(), id, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, currentTimeMillis,
            AlarmManager.INTERVAL_DAY * 7, pendingIntent);
}

private Calendar[] getCalendars(int i, int day) {
    int[] nums = lessonNum(schedules.get(i)); int len = nums.length;
    Calendar[] calendars = new Calendar[len];
    for (int k = 0; k < len; k++)
        calendars[k] = setCalendar(nums[k], day);
    return calendars;
}

private int[] lessonNum(ArrayList<String> stringArrayList) {
    int size = stringArrayList.size();
    int[] nums = new int[size];
    for (int i = 0; i < size; i++)
        nums[i] = lessonNumTry(i, stringArrayList);
    return nums;
}

private int lessonNumTry(int i, ArrayList<String> arrayList) {
    try {
        if (Integer.parseInt(arrayList.get(i).substring(1,2)) == 0)
            return 10;
    }
    catch (NumberFormatException e) {
        return Integer.parseInt(arrayList.get(i).substring(0,1));
    }
    return -1;
}

private Calendar setCalendar(int i, int day) {
    Calendar calendar = Calendar.getInstance();
    switch (i) {
        case 0:
            calHelper(calendar, day, 6, 0);
            break;
        case 1:
            calHelper(calendar, day, 7, 0);
            break;
        case 2:
            calHelper(calendar, day, 8, 0);
            break;
        case 3:
            calHelper(calendar, day, 8, 55);
            break;
        case 4:
            calHelper(calendar, day, 9, 50);
            break;
        case 5:
            calHelper(calendar, day, 10, 55);
            break;
        case 6:
            calHelper(calendar, day, 11, 50);
            break;
        case 7:
            calHelper(calendar, day, 12, 45);
            break;
        case 8:
            calHelper(calendar, day, 13, 40);
            break;
        case 9:
            calHelper(calendar, day, 14, 25);
            break;
        case 10:
            calHelper(calendar, day, 15, 15);
            break;
    }
    return calendar;
}

private void calHelper(Calendar calendar, int day, int hour, int minute) {
    long currTime = calendar.getTimeInMillis();
    calendar.set(Calendar.DAY_OF_WEEK, day);
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);
    long getTime = calendar.getTimeInMillis();
    if (getTime < currTime)
        calendar.setTimeInMillis(getTime + 604800000);
}
private void notifyUser(){
Intent Intent=新Intent(这个,MyBroadcastReceiver.class);
intent.putExtra(“Next”,getResources().getString(R.string.lesson_Next));
国际日=太阳?1:2;
对于(int i=0;i
发送通知的函数(notifyUser())应该获取一组日历,每个日历指定一天/小时/分钟,并设置警报以在该时间每周启动广播接收器。我在我的旧项目中使用了完全相同的代码,它成功了,但现在没有。我的旧项目和新项目之间的主要变化是,新项目使用数据库存储数据(sqlite3),而旧项目使用文件,我认为这与广播接收器没有被调用/显示/这里发生的任何事情无关

在舱单上我有这个

<receiver android:name=".MyBroadcastReceiver" />


任何帮助都将不胜感激

如果您在清单中声明

<receiver android:name=".MyBroadcastReceiver" />

MyBroadcastReceiver必须在代码根目录中,而不是在子包中。它在根包中吗?您可能希望在清单中键入整个包的名称以确保,例如:

<receiver android:name="org.myapp.receivers.MyBroadcastReceiver" />


您尚未在notifyUser()方法中启动intent,请使用
发送广播(intent)

定义广播意图后,您没有发送广播意图。在定义您的意图后添加此行:

sendBroadcast(intent);

在清单中使用低于目的过滤器注册接收者

<action android:name="android.intent.action.BOOT_COMPLETED"/>


您尝试过清理和重建吗?我现在尝试过了,但仍然不起作用。我该在哪里添加此行?我的错,尝试更改此行“AlarmManager AlarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);”至“AlarmManager AlarmManager=(AlarmManager)getSystemService(Context.ALARM\u服务)`还是不行。尽管很有趣,sendBroadcast确实发送了它,所以我知道BroadcastReceiver正在工作。您是否可以记录并确认调用了notifyUserTag()方法?是否调用了notifyUserTag()方法。可以确认。它与所有其他Java文件位于同一目录中。