Tôi đang cố gắng đặt thêm thông báo trong ý định của mình để chuyển sang AlarmManager được kích hoạt sau. onReceive của tôi gây nên một cách chính xác nhưng extras.getString() trả về nullAndroid không thể chuyển các mục đích bổ sung mặc dù AlarmManager
Setup:
public PendingIntent getPendingIntent(int uniqueRequestCode, String extra) {
Intent intent = new Intent(this, ActionReceiver.class);
intent.putExtra("EXTRA", extra);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueRequestCode,
intent, 0);
return pendingIntent;
}
public void setSilentLater(TimeRule timeRule) {
boolean[] weekdays = timeRule.getReoccurringWeekdays();
int dayOfWeek = 0;
for (boolean day : weekdays) {
dayOfWeek++;
if (day == true) {
Calendar cal = Calendar.getInstance();
AlarmManager alarmManager = (AlarmManager) this
.getSystemService(Context.ALARM_SERVICE);
cal.set(Calendar.DAY_OF_WEEK, dayOfWeek);
cal.set(Calendar.HOUR_OF_DAY,
timeRule.getStartTime().get(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE,
timeRule.getStartTime().get(Calendar.MINUTE));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), 3600000 * 7, getPendingIntent(0, "RINGER_OFF"));
}
}
}
Khi điều này gây nên, thông điệp trống: Mã
public class ActionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String message = extras.getString("EXTRA"); //empty
if(message == "RINGER_OFF")
{
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
else if(message == "RINGER_ON")
{
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
}
}
Bạn có thể xin vui lòng gửi lớp TimeRule của bạn? – Patrick