activité de démarrage Android à partir du service

Android:

public class LocationService extends Service { @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); startActivity(new Intent(this, activity.class)); } } 

J’ai lancé ce service à partir d’ Activity

En Activity si la condition satisfait au démarrage

 startService(new Intent(WozzonActivity.this, LocationService.class)); 

de mon LocationService mentionné ci-dessus ne pouvait pas lancer Activity , comment puis-je obtenir le contexte de l’ Activity en cours dans la classe de service?

Depuis la classe de service:

 Intent dialogIntent = new Intent(this, MyActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(dialogIntent); 

J’ai eu le même problème et je veux vous faire savoir qu’aucun de ces éléments n’a fonctionné pour moi. Ce qui a fonctionné pour moi était:

  Intent dialogIntent = new Intent(this, myActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(dialogIntent); 

et dans une de mes sous-classes, stockées dans un fichier séparé, je devais:

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

Toutes les autres réponses m’ont donné une nullpointerexception .

Une autre chose qui mérite d’être mentionnée: si la réponse ci-dessus fonctionne très bien lorsque notre tâche est en arrière-plan, la seule façon de le faire fonctionner si notre tâche (faite de service + certaines activités) était au premier plan à l’utilisateur) était comme ceci:

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

Je ne sais pas si ACTION_VIEW ou FLAG_ACTIVITY_NEW_TASK sont réellement utilisés ici. La clé du succès était

 storedActivity.startActivity(intent); 

et bien sûr FLAG_ACTIVITY_REORDER_TO_FRONT pour ne pas instancier l’activité à nouveau. Bonne chance!

on ne peut pas utiliser le Context du Service ; a pu obtenir le Context (package) de la même manière:

 Intent intent = new Intent(getApplicationContext(), SomeActivity.class); 

Si vous avez besoin de recalculer une activité qui est dans bacgrounde, à partir de votre service, je suggère le lien suivant. Intent.FLAG_ACTIVITY_NEW_TASK n’est pas la solution.

https://stackoverflow.com/a/8759867/1127429

Alternativement,

Vous pouvez utiliser votre propre classe d’application et appeler depuis n’importe quel lieu (en particulier les non-activités).

 public class App extends Application { protected static Context context = null; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); } public static Context getContext() { return context; } } 

Et enregistrez votre classe Application:

  

Alors appelez:

 App.getContext();