我在Android Studio中有一个警报应用程序,在其中单击按钮时,将设置一个挂起的意图,以转到AlarmReceiver类(我知道我在代码中拼写错误)。
alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
timePicker = (TimePicker) findViewById(R.id.TimePicker);
updateText = (TextView) findViewById(R.id.AlarmCheck);
final Calendar calendar = Calendar.getInstance();
Button startAlarm = (Button) findViewById(R.id.AlarmOn);
final Intent myIntent = new Intent(this.context,AlarmReciever.class);
startAlarm.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onClick(View view) {
int hour = timePicker.getHour();
int minute = timePicker.getMinute();
String minuteString=String.valueOf(minute);
calendar.set(Calendar.HOUR,timePicker.getHour());
calendar.set(Calendar.MINUTE, timePicker.getMinute());
if (minute < 10) {
minuteString = "0" + String.valueOf(minute);
}
setAlarmText("Alarm On: " + hour +":"+minuteString);
Log.e("We have reached: ", "Alarm On Button");
myIntent.putExtra("extra", "alarm on");
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT );
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
});
设置闹铃,使其立即或最多在1分钟内关闭(使用时间选择器)。单击按钮的自定义错误日志消息出现在logcat中,但是当警报时间到来时,AlarmReceiver中的消息不会出现。我想知道为什么在我指定的时间我的闹钟不会响起。
public class AlarmReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("We are in!","Finally");
String getString = intent.getExtras().getString("extra");
Log.e("Key: ",getString);
Intent serviceIntent = new Intent(context, RingtonePlayingService.class);
serviceIntent.putExtra("extra",getString);
context.startService(serviceIntent);
}
}
我看过Android Studio中闹钟的其他示例,使用类似的代码,它们似乎可以正常工作。但是,它们的build.gradle文件具有不同的目标和编译SDK。我已从set()
切换到setExact()
,因为该文档表明在使用API 19之后使用AlarmManager的任何应用程序都不会立即关闭警报,而无需使用setExact()
。但是,这没有帮助。我不确定如何进行。任何帮助将不胜感激,谢谢!