Lorsque nous démarrons un service comme suit: Il donne une erreur: l'intention de service doit être explicite. P> Pourquoi est-ce le cas. Pourquoi Android nécessite une intention de service d'être explicite? P> P>
3 Réponses :
"Pour vous assurer que votre application est sécurisée, utilisez toujours une intention explicite lors du démarrage ou de la liaison de votre service et de ne pas déclarer des filtres d'intention pour le service." ( du développeur Android ) Ce doit être parce que sans que d'autres applications puissent commencer votre service et etc. p>
Lorsque vous démarrez un service avec une intention implicite contrairement à l'activité, aucune interface utilisateur est impliqué. Lorsque plusieurs services peuvent gérer une intention, Android sélectionne un à aléatoire; L'utilisateur n'est pas invité à Sélectionnez un service. p>
Si le service malveillant est lié à la demande d'appel, l'attaquant peut renvoyer des données malveillantes arbitraires. ou simplement renvoyer un résultat réussi sans prendre l'action demandée. le Le service malveillant peut voler des données et mentir sur la finalisation actions demandées. p>
Un peu plus à ceci: Si nous voulons utiliser l'intention implicite (avec nom d'action), nous devons utiliser Setpackagename comme ceci:
Intent intent = new Intent(); intent.setPackage("com.action.ServicePackageName"); intent.setAction("com.action.ActionNameOfService"); bindService(intent, yourServiceConectionObject, Service.BIND_AUTO_CREATE); //or //startService(intent);
Sécurité ... s'il y a plusieurs activités réagissant pour le même objectif que l'utilisateur de l'intention est invité à choisir une ... maintenant, imaginez simplement comment cela pourrait fonctionner pour les services (je ne peux pas) ... c'est pourquoi vous devez faire valoir le composant exact Nom
développeur.android.com/Guide/Components/intents-filters.htmlled/a >
@selvin il a fonctionné pour les versions PRE V5 (je crois) pour que cela puisse fonctionner ...
"Ça marche" ... vous voulez dire aléatoire ou tous les services que Mach courrait ... mauvais, mauvais Android :)
@Selvin je pense qu'aucun service n'a commencé dans ce cas (bon bon Android)
ah, alors "ça a fonctionné" signifie "n'a pas lancé une exception mais n'a rien fait"
@Selvin StartService et BindService ne sont pas des méthodes "nules" ... Ils renvoient respectivement le nom de nom et Boolean, ainsi que comment savez-vous qu'ils ne jettent pas une exception d'exécution?