0 votos

Hola, vuelvo por aca con una duda de hace mucho y que no logro resolver

 

  myIntent = new Intent(getActivity(), MyAlarmService.class);
                        pendingIntent = PendingIntent.getService(getActivity(), 0, myIntent, 0);
                        alarmManager = (AlarmManager)getActivity().getSystemService(getContext().ALARM_SERVICE);
                        Calendar calendar1 = Calendar.getInstance();
                        calendar1.setTimeInMillis(System.currentTimeMillis());
                        calendar1.add(Calendar.SECOND, 30);
                        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(),30000, pendingIntent);

Tengo este codigo para ejecutar una clase que envie una actualizacion de datos a mi servidor.

public class MyAlarmService extends Service

Esa es la clase que extiende de Service pero tengo un problema, parte del codigo interno necesita de getActivity pero no la puedo pasar, entonces probe esto:

Activity activity =(Activity) getApplicationContext();

    Pero tampoco funciona...

 

AYUDA POR FAVOR

preguntado por PabloMorales Jun 9, 2016 en Android

1 Respuesta

0 votos
Si está el código en un Fragment debería de dejarte utilizar el getActivity(). Tienes ejemplos en http://jarroba.com/context-de-android/
respondido por Ramon [Admin] Jun 9, 2016
Hola,  el Primer codigo esta en fragment...  pero  ejecuta una clase que extiende de Service, en esta clase el intent no tiene para recuperar el activity o fragment del cual fue iniciado y no puedo tomarlo

Si extiende de Service, en el propio Service tiene Context, con lo que puedes pedirlo en la clase del Service:

Context context = this;

No he probado a obtener un context desde un Fragment dentro de un Service, pero debería de ser parecido (o sino siempre puedes recurrir al truco de pasar el context con un Singleton, aunque no sea lo más correcto).

Puedes probar con:

getActivity().getApplicationContext();