web-dev-qa-db-fra.com

Le service exporté ne nécessite pas d'autorisation: qu'est-ce que cela signifie?

J'ai créé un service lié à d'autres applications via AIDL et je l'ajoute au manifeste comme suit:

<service Android:name=".MyService">
    <intent-filter>
        <action Android:name="org.example.Android.myservicedemo.IService" />
    </intent-filter>
</service>

où IService est l'interface AIDL.

De cette manière, 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 il est évident que les applications ne peuvent pas se lier au service.

Que signifie cet avertissement?

134
enzom83

J'ai eu le même problème lorsque j'ai mis à jour le SDK vers la version 20 . Je l'ai supprimé en ajoutant Android: propriété exportée Android:exported="false" ainsi:

<service Android:name=".MyService"
    Android:exported="false">
    <intent-filter>
        <action Android:name="org.example.Android.myservicedemo.IService" />
    </intent-filter>
</service>

Voir ceci doc

121
Nam Vu

Si vous souhaitez limiter votre activité à votre propre application, vous devez ajouter exported=false à la déclaration du manifeste de votre activité.

Si vous souhaitez autoriser d'autres applications à l'utiliser (explicitement via son nom de classe ou, mieux, en utilisant une intention avec un type de données ou une action), vous avez le choix entre:

  • restreindre ces applications en utilisant une permission
  • autoriser toutes les applications à l'utiliser, vous pouvez alors ajouter tools:ignore="ExportedActivity" à la déclaration du manifeste de votre activité.

-

Le même raisonnement s’applique à un service, avec tools:ignore="ExportedService" et les fournisseurs de contenu avec tools:ignore="ExportedContentProvider".

50
Snicolas

Comme Jens a déclaré: "Cela signifie que les autres applications (arbitraires) de l'utilisateur sur son téléphone peuvent se lier à votre service et appeler la méthode de leur choix qui est exposée via votre interface AIDL."

4
JD.