para - manual de programacion android pdf
actividad de inicio de Android desde el servicio (6)
Alternativamente,
Puede usar su propia clase de aplicación y llamar desde donde lo necesite (especialmente sin actividades).
public class App extends Application {
protected static Context context = null;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
Y registre su clase de aplicación:
<application android:name="yourpackage.App" ...
Luego llame :
App.getContext();
Androide:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
Lancé este servicio desde Activity
En Activity
si la condición satisface el inicio
startService(new Intent(WozzonActivity.this, LocationService.class));
desde mi LocationService
mencionado anteriormente no se pudo iniciar la Activity
, ¿cómo puedo obtener el contexto de la Activity
actual en la clase de servicio?
Desde el interior de la clase de servicio:
Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
Otra cosa que vale la pena mencionar: mientras que la respuesta anterior funciona bien cuando nuestra tarea está en segundo plano, la única forma en que podría hacerlo funcionar si nuestra tarea (hecha de servicio + algunas actividades) estuviera en primer plano (es decir, una de nuestras actividades visible al usuario) fue así:
Intent intent = new Intent(storedActivity, MyActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
storedActivity.startActivity(intent);
No sé si ACTION_VIEW o FLAG_ACTIVITY_NEW_TASK tienen algún uso real aquí. La clave del éxito fue
storedActivity.startActivity(intent);
y, por supuesto, FLAG_ACTIVITY_REORDER_TO_FRONT para no crear una instancia de la actividad nuevamente. ¡La mejor de las suertes!
Si necesita recalcular una Actividad que se encuentra en el bacgrounde, desde su servicio, le sugiero el siguiente enlace. Intent.FLAG_ACTIVITY_NEW_TASK no es la solución.
https://.com/a/8759867/1127429
Tuve el mismo problema, y quiero hacerle saber que nada de lo anterior funcionó para mí. Lo que funcionó para mí fue:
Intent dialogIntent = new Intent(this, myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(dialogIntent);
y en una de mis subclases, almacenada en un archivo separado, tuve que:
public static Service myService;
myService = this;
new SubService(myService);
Intent dialogIntent = new Intent(myService, myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myService.startActivity(dialogIntent);
Todas las otras respuestas me dieron una nullpointerexception
.
uno no puede usar el Context
del Service
; fue capaz de obtener el Context
(paquete) por igual:
Intent intent = new Intent(getApplicationContext(), SomeActivity.class);