2013-09-27 2 views

ответ

1

в службе установить правильное время для объекта Calendar экземпляра:

Calendar calendar = Calendar.getInstance(); 
int mYear = calendar.get(Calendar.YEAR); 
int mMonth = calendar.get(Calendar.MONTH); 
int mDay = calendar.get(Calendar.DAY_OF_MONTH); 
int mHour = calendar.get(Calendar.HOUR_OF_DAY); 

if(mHour >= 8) 
    mDay++; 

//set 8:00 a.m. 
calendar.set(mYear, mMonth, mDay, 8, 0, 0); 

затем использовать AlarmManager планировать свое мероприятие:

Intent intent = new Intent(MyService.this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyService.this, 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

и ваш класс AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Alarm Receiver message", Toast.LENGTH_SHORT).show(); 
    } 

Запомнить добавить BraodcastReceiver в файл манифеста:

<receiver android:name=".receiver.AlarmReceiver"/> 

EDIT: переопределить onStartCommand метод

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    lanzarclase(); 
    return super.onStartCommand(intent, flags, startId); 
} 
+0

Я сделал все, но не работает. – user2171300

+0

Это работает для меня. Вставьте часть своего кода. – Mieszko

0
public class Servicio extends Service { 
private static Context context; 
protected SmsObserver smsSentObserver=null; 
public Handler handler; 
public Handler handler1; 
static String quien; 
public static String sujeto, texto; 
private static PendingIntent pendingIntent; 
String que; 
@Override 

public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 


    @Override   
    public void onCreate() 
    { 

     registersmsevent(); 
     lanzarclase(); 
    } 

    private void lanzarclase() {  
     Calendar calendar = Calendar.getInstance(); 
     int mYear = calendar.get(Calendar.YEAR); 
     int mMonth = calendar.get(Calendar.MONTH); 
     int mDay = calendar.get(Calendar.DAY_OF_MONTH); 
     int mHour = calendar.get(Calendar.HOUR_OF_DAY); 

     if(mHour >= 9) 
      mDay++; 

     //set 8:00 a.m. 
     calendar.set(mYear, mMonth, mDay, 9, 24, 0); 


     Intent intent = new Intent(Servicio.this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(Servicio.this, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 


    } 

Другой класс:

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Mensaje de alarma recibida", Toast.LENGTH_SHORT).show(); 
} 

}

Смежные вопросы