备注:利用系统AlarmManager 管理闹钟,如果需要后台闹钟提示需要servicer保活,不然app杀死还是收不到。
Intent intent =new Intent(this, StartReceiver.class);//注册跳转
intent.setAction("SMSAlarm");//定义一个action 防止获取的时候null
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);//因为我使用的是广播接收所以getBroadcast()根绝自己的类型get 不然收不到闹钟
AlarmManager alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);//管理者对象
Calendar calendar = Calendar.getInstance(); // Calendar 对象
1、单次闹钟
calendar.setTimeInMillis(System.currentTimeMillis());//设置当前时间
calendar.add(Calendar.SECOND,30);//设置闹钟30s 后响应
if (alarmManager !=null)
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
2、重复闹钟 //如果设置的时间小于当前时间会即时发送广播,间隔时间超过50分钟会延迟几分钟才发送
int INTERVAL = 1000 * 60 * 60 * 24;// 24h
calendar.set(Calendar.HOUR_OF_DAY, 21);//定义每天九点闹钟一次
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
calendar.set(Calendar.MILLISECOND, 0);
if (alarmManager !=null)
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),INTERVAL ,pendingIntent);
接收广播别忘了Manifast注册
/**
* 因为我这边有个开机自启的功能,所以写一起了,判断getAction 就好了
*/
public class StartReceiverextends BroadcastReceiver {
public StartReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { //监听开机启动
Intent i =new Intent(context, MainTabActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
if (intent.getAction().equals("SMSAlarm")) {
Log.e("intent", "qeqeeqe" +"=" + intent.getAction());
}
}
}
网友评论