要解决Alarm Manager提前触发但没有设置毫秒的问题,可以使用Calendar类来设置提前触发的时间。以下是一个示例代码:
import java.util.Calendar;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
public class AlarmUtils {
public static void setAlarm(Context context, int minutes) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, minutes);
Intent intent = new Intent(context, YourReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
在上面的代码中,我们首先获取了AlarmManager的实例,并创建了一个Calendar对象。然后,我们使用Calendar的add方法来设置提前触发的时间,这里是加上了指定的分钟数。接下来,我们创建了一个Intent和一个PendingIntent,用于指定要触发的广播接收器。最后,我们使用AlarmManager的set方法来设置定时触发的时间,其中第二个参数是Calendar的时间戳,告诉AlarmManager在此时间触发广播。