1

这个问题可能与这个问题和这个问题有关,但与那些问题不同,我想在特定时间开始它们(比如 15/03/2014 的 11:12:13)。

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

4

3 回答 3

5

试试这个代码,我测试了它:

第一:创建日历:

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() + xxint您想要等待的毫秒数)

于 2014-05-11T00:48:42.980 回答
1

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

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

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

于 2014-03-12T06:53:24.403 回答
0

如果您想在创建时间启动 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 中注册接收器。

于 2014-03-12T07:02:18.890 回答