J’ai créé un service lié par d’autres applications via AIDL et je l’ajoute au manifeste comme suit:
où IService est l’interface AIDL.
De cette façon, Eclipse me montre l’avertissement Le service exporté ne nécessite pas d’autorisation . Si je supprime le intent-filter
, l’avertissement disparaît, mais les applications ne peuvent évidemment pas se lier au service.
Que signifie cet avertissement?
J’ai eu le même problème lorsque j’ai mis à jour SDK à la version 20 . Je l’ai enlevé en ajoutant Android: propriété exscope android:exported="false"
comme ça:
Voir cette doc
Si vous souhaitez restreindre l’utilisation de votre activité à votre propre application, vous devez alors append exported=false
à l’instruction manifeste de votre activité.
Si vous souhaitez autoriser d’autres applications à l’utiliser (explicitement via son nom de classe ou, mieux encore, en utilisant une intention avec un type de données ou une action), vous avez deux possibilités:
tools:ignore="ExportedActivity"
à l’instruction manifeste de votre activité. –
Le même raisonnement s’applique à un service, avec des tools:ignore="ExportedService"
et des fournisseurs de contenu avec des tools:ignore="ExportedContentProvider"
.
Comme l’a dit Jens , «cela signifie que d’autres applications (arbitraires) que l’utilisateur a sur son téléphone peuvent se connecter à votre service et appeler la méthode qui leur plait, qui est exposée via votre interface AIDL».