先看代码,添加闹铃的,
Intent intent = new Intent(context,RepeatingAlarm.class);
intent.setAction("com.ryan.alarm.bbb");
Log.i("获取日程id",""+alarmid);
PendingIntent sender = PendingIntent.getBroadcast(
context, alarmid, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTime(alarmtime);
Log.i("addAlarm",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(alarmtime));
Log.i("addAlarm","当前系统时间:"+System.currentTimeMillis());
AlarmManager am = (AlarmManager)context.getSystemService(Activity.ALARM_SERVICE);
am.setTimeZone("GMT+08:00");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setExact(AlarmManager.RTC, System.currentTimeMillis()+15*1000, sender);
} else {
am.set(AlarmManager.RTC, System.currentTimeMillis()+15*1000, sender);
}
广播很简单
public class RepeatingAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"进入onReceive",Toast.LENGTH_SHORT).show();
Log.i("RepeatingAlarm","进入onReceive");
}
}
广播的注册
<receiver android:name=".alarmtool.RepeatingAlarm" android:process=":remote" >
<intent-filter>
<action android:name="com.ryan.alarm.bbb" /><!-- 广播接收的Intent -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
我先让当前时间的15秒后执行闹铃,但是就是收不到广播。
但是我用模拟器就可以收到广播,执行正常。我怀疑跟时区有关系,模拟器是标准格林尼治时间,手机是我们的东八区。但是也不应该啊,我看其他的也都是默认时区,都很正常。我的手机是奇酷的,我用vivo的手机试了,是可以正常进去的。就我的手机不行。奇怪了