
d-hombre
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 iniciar
startService(new Intent(WozzonActivity.this, LocationService.class));
de mi LocationService
mencionado anteriormente no pudo iniciar Activity
¿cómo puedo obtener el contexto de la ejecución actual? Activity
en clase de servicio?

d-hombre
Desde dentro de la clase de servicio:
Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);

Andy
Tuve el mismo problema y quiero que sepas 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 un nullpointerexception
.

jose braz
ACTUALIZAR ANDROID 10 Y SUPERIOR
Ya no se permite iniciar una actividad desde el servicio (en primer plano o en segundo plano).
Todavía hay algunas restricciones que se pueden ver en la documentación.
https://developer.android.com/guide/components/activities/background-starts
Otra cosa que vale la pena mencionar: si bien la respuesta anterior funciona bien cuando nuestra tarea está en segundo plano, la única forma en que podría hacer que funcione si nuestra tarea (hecha de servicio + algunas actividades) estuviera en primer plano (es decir, una de nuestras actividades visible al usuario) era 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 por no volver a instanciar la actividad. ¡La mejor de las suertes!
uno no puede usar el Context
de El Service
; fue capaz de obtener el (paquete) Context
similar:
Intent intent = new Intent(getApplicationContext(), SomeActivity.class);

Jaime
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();

Suraj Gaur
También puedes usar getApplicationContext() método en su Servicio para ejecutar el Iniciar actividad() método como se escribe a continuación:
Intent myIntent = new Intent();
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(myIntent);