Administrador de alarmas programado no funciona Android

Estoy tratando de iniciar un servicio de alarma que se repite todos los días en un momento determinado. He pasado por un montón de hilos en el desbordamiento de la pila con respecto a esto, pero no hay suerte. He seguido algunos tutoriales: http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/ y http://javatechig.com/android/repeat-alarm-example en androide

Mi servicio nunca se inicia y no entiendo por qué. A continuación se muestra mi código:

Mi archivo de manifiesto:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="com.android.alarm.permission.SET_ALARM" /> <application> <service android:name="com.paper.DownloadService" android:enabled="true"/> <receiver android:name="com.paper.MyReceiver" ></receiver> </application> 

Mi clase de receptor:

 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context rcontext, Intent intent) { Log.e("Main Activity", "inside on receive of myreceiver"); Intent service1 = new Intent(rcontext, DownloadService.class); rcontext.startService(service1); } } 

Mi clase de servicio:

  public class DownloadService extends Service { @Override public void onCreate() { // TODO Auto-generated method stub Log.e("Download Service", "CREATED"); } @SuppressLint({ "SimpleDateFormat", "NewApi" }) @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub Log.e("Download Service", "STARTED"); return START_NOT_STICKY; } } 

Mi actividad principal (dentro del método Crear):

 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 15); calendar.set(Calendar.MINUTE, 29); Intent myIntent = new Intent(this, MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent,0); alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

Aquí, estoy tratando de configurar mi alarma a las 3:29 pm todos los días, pero el servicio no se inicia en ese momento o en cualquier momento para el caso. Cualquier ayuda sería apreciada. ¡Gracias!

Esto es lo que hice para que funcionara:

1) Añadido <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> a mi archivo de manifiesto.

2) Cambio de código en mi actividad principal a:

  AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR, 3); calendar.set(Calendar.MINUTE, 29); calendar.set(Calendar.AM_PM, Calendar.PM); Intent myIntent = new Intent(this, MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent,0); alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

Espero que alguien encuentre esto útil!

  • ¿Cómo notificar la actividad sobre los cambios en la variable global en la aplicación?
  • BroadcastReceiver con múltiples filtros o BroadcastReceivers múltiples?
  • Cómo ejecutar un servicio todos los días al mediodía, y en cada inicio
  • Registro de Receptor de Difusión en Manifiesto vs. Actividad
  • Detectar qué tarjeta SIM ha recibido el mensaje
  • ¿Es BroadcastReceiver.onReceive llamado exactamente una vez por sms?
  • Actualizar una vista de lista en un fragmento de un receptor de difusión
  • Android: la actividad se ha filtrado IntentReceiver
  • BroadcastReceiver no se llama cuando la pantalla está bloqueada en Android
  • Android captura nueva llamada saliente
  • Servicio y un BroadCastReceiver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.