代码
public void setAlarm(BeanMsg tmp){
int hourOfDay =Integer.parseInt( CurrentTime.getHour(tmp));
int minute =Integer.parseInt( CurrentTime.getMinue(tmp));
mCalendar.setTimeInMillis(System.currentTimeMillis());
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND, 0);
mCalendar.set(Calendar.MILLISECOND, 0);
Log.v("hourOfDay",""+hourOfDay);
Log.v("minute",""+minute);
Intent intent = new Intent(getActivity(), AlarmReceiver.class);
if(getActivity() == null)
{
isNUll = 1;
}
Log.v("isNULL",""+isNUll);
PendingIntent pi = PendingIntent.getBroadcast(getActivity(), 0, intent,0);
mAlarmManager=(AlarmManager)getActivity().getSystemService(MainActivity.ALARM_SERVICE);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi);
Toast.makeText(this.getActivity(), "闹钟设置成功", Toast.LENGTH_LONG).show();//提示用户
这是 AlarmReceiver的代码
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i=new Intent(context, AlarmActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
这是AlarmActivity的代码
public class AlarmActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//显示对话框
new AlertDialog.Builder(AlarmActivity.this).
setTitle("闹钟").//设置标题
setMessage("时间到了!").//设置内容
setPositiveButton("知道了", new OnClickListener(){//设置按钮
public void onClick(DialogInterface dialog, int which) {
AlarmActivity.this.finish();//关闭Activity
}
}).create().show();
}
}
当你启动AlarmActivity 的时候,之前那个fragment所在的activity到后台去了吧
// mCalendar.setTimeInMillis(System.currentTimeMillis());
这句先注释掉试试
闹钟属于系统服务,只有系统的进程的ID才能调用,建议自己创建ALertService模拟闹钟
建议使用PaddingIntent实现
系统的服务大部分需要添加权限的,你试试添加权限