如何在特定时间开始活动?

时间:2014-03-12 06:46:36

标签: android android-activity sms smsmanager

此问题可能与thisthis问题有关,但与那些问题不同,我想在特定时间启动它们(例如2014年3月15日11:12:13)

我实际上正在开发一个在给定时间发送消息的项目(SMS)。

3 个答案:

答案 0 :(得分:4)

尝试此代码,我测试了它:

首先:创建一个日历:

Calendar calendar = Calendar.getInstance();
  • 通过以下方式之一设定时间:

    calendar.set(year, month, day, hourOfDay, minute);
    // be careful month start form "0" so for "May" put "4"
    
  • 或:

    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    

第二:添加:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

注意:如果您需要计时器,可以在上面的代码中将alendar.getTimeInMillis()替换为System.currentTimeMillis() + x。 (x是您想要等待的int毫秒数

答案 1 :(得分:1)

使用Android API中的AlarmManager。只需按照本教程:

http://android-er.blogspot.in/2011/05/using-alarmmanager-to-start-scheduled.html

在上面的教程中,他们讨论了在一段时间后安排活动。在您的情况下,只需在当前时间和您的启动时间之间取差,并探索API以获得您想要的内容。

答案 2 :(得分:0)

如果你想在cretaion时间启动Activity,请使用AlarmManager。

我为此写了一个例子。

Intent intent = new Intent(this, YourReceiver.class);

//11:12:13 on 15/03/2014 

Calendar cal=Calendar.getInstance();
cal.set(Calendar.MONTH,2);//because is started from 0
cal.set(Calendar.YEAR,2014);
cal.set(Calendar.DAY_OF_MONTH,15);
cal.set(Calendar.HOUR_OF_DAY,11);
cal.set(Calendar.MINUTE,12);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);



alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent );

使用Contect.startActivity方法在接收者内部调用活动。 别忘了在meanifest.xml中注册接收器。