Service Intention doit être explicite: l'Intention

J'ai une application un certain temps maintenant, dans ce que j'appelle un service par l'intermédiaire d'un récepteur de radiodiffusion (MyStartupIntentReceiver). Le code du récepteur de radiodiffusion afin d'appeler le service est:

public void onReceive(Context context, Intent intent) {
    Intent serviceIntent = new Intent();
    serviceIntent.setAction("com.duk3r.eortologio2.MyService");
    context.startService(serviceIntent);
}

Le problème est que dans Android 5.0 Lollipop j'obtiens l'erreur suivante (dans les versions précédentes d'Android, tout fonctionne ok):

Unable to start receiver com.duk3r.eortologio2.MyStartupIntentReceiver: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.duk3r.eortologio2.MyService }

Que dois-je changer pour que le service soit déclarée explicite et démarrer normalement? Essayé quelques réponses dans d'autres similaires fils, mais bien que je me suis débarrassé du message, le service ne peut pas démarrer.

  • est-ce un service dans votre application?
  • oui le package com.duk3r.eortologio2 est l'une de mes applications.
  • Seulement un <intent-filter> sur un composant lorsque vous voulez apps de tiers de communiquer avec le composant. Vous semblez être tombée dans le piège de supposer que vous avez besoin d'un <intent-filter> pour tout-en réalité, vous aurez rarement besoin d'un <intent-filter>. Explicite Intent est quand vous désigner le composant de parler dans le Intent lui-même, généralement en utilisant le constructeur qui prend un Java Class objet que le deuxième paramètre. Que, plutôt qu'implicite Intents et <intent-filter>s sont ce que vous devriez utiliser pour les composants locaux pour votre application.
  • Double Possible de Android L API (21) - java.lang.IllegalArgumentException: Service d'Intention doit être explicite
InformationsquelleAutor duk3r | 2015-01-08