Du point de vue de l'utilisateur, on ne peut pas vraiment empêcher qu'une URL récupérée à partir d'une étiquette NFC soit lancée dans un navigateur. À la découverte d'une telle URL, Android notifie simplement l'application qui a précédemment enregistré son intérêt pour ce type de données provenant d'un tag NFC (ou affiche un sélecteur d'activité si plusieurs applications ont enregistré un intérêt pour ce type de données).
C'est donc l'application du navigateur web qui a enregistré son intérêt (par le biais d'un filtre d'intention dans son AndroidManifest.xml) et vous ne pouvez normalement pas 1 désactivez ça.
Du point de vue du programmeur, cependant, vous pouvez empêcher qu'une URL particulière soit traitée par un navigateur Web. Les navigateurs Web s'enregistrent généralement pour être lancés sur toutes les URL "http://" et "https://". Vous pouvez contourner cette règle en enregistrant votre application pour une URL plus spécifique (c'est-à-dire une URL qui comprend un nom d'hôte ou même un chemin, par ex. http://www.example.com/ ). Dans ce cas, votre application aura automatiquement la priorité sur le navigateur web (aucun sélecteur d'activité ne sera affiché).
En ce qui concerne votre idée avec le BroadcastReceiver : Ceci n'est actuellement pas possible. Les événements de découverte NFC, comme la découverte d'une URL, sont uniquement envoyés aux activités. Un récepteur de diffusion ne peut pas capter ces intentions. (Voir cette question sur Stackoverflow pour une solution de contournement possible).
1 ) Notez que ce n'est pas tout à fait vrai, car il existe des moyens de désactiver les filtres d'intention de manière programmatique dans certaines conditions.