J'essaie de lancer une application Android à partir d'un URI en utilisant cette SO question comme référence).
J'ai un fichier manifeste avec l'activité déclarée suivante:
<activity Android:name=".MainActivity">
<intent-filter>
<action Android:name="Android.intent.action.VIEW" />
<data Android:scheme="http" Android:Host="example.com" />
</intent-filter>
</activity>
J'essaie de lancer MainActivity avec le lien http://example.com . Mon problème est que je reçois l'avertissement
"exported activity does not require permission"
J'ai regardé d'autres SO questions qui signalent ce même avertissement et toutes les solutions ne semblent pas fonctionner.
Comment écrire correctement le filtre d'intention d'activité pour éviter l'avertissement?
Merci
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: exporté propriété:
<activity
Android:name=".MainActivity"
Android:exported="false">
<intent-filter>
<action Android:name="Android.intent.action.VIEW" />
<data Android:scheme="http" Android:Host="example.com" />
</intent-filter>
</activity>
à l'intérieur de la déclaration d'activité dans le manifeste. Bien sûr, vous pouvez le spécifier si l'activité est destinée uniquement à un usage interne à l'application
La raison pour laquelle il le corrige se trouve sur docs :
Android: exporté : la valeur par défaut dépend si l'activité contient des filtres d'intention. L'absence de filtres signifie que l'activité ne peut être invoquée qu'en spécifiant son nom de classe exact. Cela implique que l'activité est destinée uniquement à un usage interne à l'application (car d'autres ne connaissent pas le nom de la classe). Dans ce cas, la valeur par défaut est "false". En revanche, la présence d'au moins un filtre implique que l'activité est destinée à un usage externe, donc la valeur par défaut est "true" .
Puisque "Le récepteur exporté ne nécessite pas d'autorisation" (au moins le message LINT est clair), vous l'avez compris.
Avez-vous essayé de nettoyer votre projet (Projet> Nettoyer ...)? Il a corrigé cet avertissement pour mon projet, peut-être le vôtre.
Pour vous débarrasser de cet avertissement, vous avez deux choix:
Android:exported="false"
sur l'activité pour empêcher d'autres applications d'appeler votre activité par une intentionAndroid:permission
attribut où vous pouvez spécifier les autorisations dont une application doit disposer pour appeler votre activité.Vous pouvez obtenir plus d'informations dans la Documentation Android .
Merci à @ furykid pour les liens.