10
votes

Android NFC Les intites ne démarrent pas mon activité

J'essaie d'écrire une application simple pour interagir avec les balises NFC, mais je ne peux pas sembler obtenir mon téléphone de faire quoi que ce soit mais déclencher l'application par défaut NFC Tag. Je veux vraiment juste pouvoir intercepter une balise I Scanner, déterminer s'il y a des données à ce sujet et d'agir en conséquence.

Maintenant, mon fichier manifeste ressemble à xxx

Cependant, lors de la numérisation d'une balise NFC, je ne vois jamais l'activité commencer. Est-ce que j'ai râté quelque chose? J'ai essayé de placer l'intention filtre à l'intérieur d'un BroadcastraSiver et n'avait pas de chance ...


0 commentaires

4 Réponses :


7
votes

Les documents SDK montrent cela comme exemple de base.

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain" />
</intent-filter>


2 commentaires

Notez l'élément catégorie dans l'exemple ci-dessus. C'est vraiment nécessaire (bien que le nom "défaut" suggère autrement).


Pouvez-vous me montrer qui puis-je lancer des activations différentes basées sur différentes balises NFC? TAG1 / PROD / 234 ou TAG3 / BUYME / 3422. S'il y a prod, je veux tirer une activité de productionInfo, mais avec Buyme, je voudrais mettre dans une liste,



0
votes

Android chose automatiquement l'application la plus pertinente pour gérer la balise NFC numérisée. Vous devez être plus spécifique dans votre fichier -filtre , c'est-à-dire seulement écouter uniquement des balises de texte, des étiquettes URL ou des étiquettes de contact. Cela peut être fait en spécifiant en outre le filtre, à l'aide de votre exemple, pour les étiquettes texte. Sinon, l'application par défaut NFC-TAG sera déclenchée.


0 commentaires

25
votes

Vous ne pouvez pas commencer votre application par toutes les balises NFC que vous numérisez. Android déterminera ce que l'application la plus appropriée est basée sur la spécification du filtre à l'intention. Toutefois, si votre application est en cours d'exécution au premier plan, vous pouvez utiliser Dispatch de premier plan NFC pour attraper toutes les intentions NFC.

in Oncreate () code> Ajouter: P>

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);


3 commentaires

L'idée de NFC est que cela peut faire des choses telles que l'action appropriée sur votre téléphone. Quelques exemples: ouvrez une URL dans votre navigateur, enregistrement à Foursquare, connectez-vous automatiquement avec un réseau WiFi. Android détermine quelle application pour transférer l'intention de la NFC de base sur les filtres à l'intention des applications. Le filtre le plus spécifique "gagne". Si plusieurs correspondances sont trouvées, un sélecteur d'applications est présenté à l'utilisateur. Il existe une exception près: Envoi de premier plan NFC, où l'application exécutée au premier plan peut demander à toutes les intentions NFC d'un type spécifique.


Je suppose que je ne comprends tout simplement pas pourquoi il s'agissait de la fonctionnalité choisie, contrairement à SMS où l'intention est capable d'être ramassée et rediffusion par un nombre quelconque de récepteurs. Il semble stupide que vous vous limitais à ne prendre qu'une action sur une interaction avec NFC Tech.


Une différence est qu'une intention NFC est associée à un périphérique NFC connecté, par exemple une balise NFC. Une seule activité peut communiquer avec elle à la fois; Une balise NFC ne prend pas en charge plusieurs connexions simultanées.



1
votes

Vous vous attendez à ce que les balises soient définies au format NDEF. Votre programme ne sera donc lancé que si les balises en cours de lecture sont au format NDEF.

Vous pouvez essayer plus de filtres d'intention génériques tels que TAG_Discouvered ou Tech_Discovered.


0 commentaires