Question

Salut, j'ai deux Samsung galaxy S4.J'ai développé une NFC application android qui va faisceau de texte simple pour le téléphone en contact (téléphone cible) lorsqu'un bouton est touché sur le téléphone qui exécute l'application(source de téléphone).Mon problème est que quand je lance mon appli sur le téléphone source et apporter le téléphone cible plus près de la source de téléphone, par défaut de samsung app se lance(Cette application montre une capture d'écran de l'activité actuelle de la source de téléphone et vous demande de toucher l'écran, puis il lance la même activité dans le téléphone cible).Je veux le désactiver, de sorte que l'application que j'ai développé fonctionne sans aucun problème.Comment puis-je y parvenir?

Était-ce utile?

La solution

Si vous le souhaitez (ou ont pour1) utiliser la fonction Android Beam, il est pas de de façon à éviter le rayon de l'INTERFACE utilisateur (c'est l'activité la petite capture d'écran de votre activité).

Afin d'utiliser correctement la Poutre (avec le Faisceau de l'INTERFACE utilisateur) et envoyer votre texte2 est de faire ce qui suit:

  1. Permettre au premier plan de la répartition de l'activité sur votre périphérique cible, de sorte que le reçu NDEF message est immédiatement traitée par votre application.Vous pouvez ensuite recevoir des messages NDEF (ou plutôt NFC découverte événements de votre activité onNewIntent() la méthode.Voir cette réponse comment activer le premier plan de l'expédition.
  2. Désactiver la transmission de l'activité sur votre périphérique cible à l'aide de quelque chose comme ceci (par ex.lors de la réception de l'activité onCreate() la méthode):

    NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    if (nfcAdapter != null) {
        nfcAdapter.setNdefPushMessage(null, this);
    }
    
  3. Changer le NDEF message envoyé par votre appareil source à l'NDEF message que vous voulez envoyer (par ex.un NDEF message contenant votre enregistrement de Texte).Si vous ne le faites pas, Android (par défaut) envoyer une Application Android Enregistrer qui obtient votre activité par défaut d'être lancé sur le périphérique cible.Vous pouvez configurer le message NDEF comme ceci (par ex.dans l'activité d'envoi de la onCreate() la méthode):

    NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    if (nfcAdapter != null) {
        byte[] text = "Hello World!".getBytes("UTF-8");
        byte[] recordPayload = new byte[3 + text.length];
        recordPayload[0] = (byte)0x02; //UTF-8, 2-byte language code
        recordPayload[1] = (byte)0x65; //'e'
        recordPayload[2] = (byte)0x6E; //'n'
        System.arraycopy(text, 0, recordPayload, 3, text.length);
        NdefMessage ndefMsg = new NdefMessage(
            new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, null, recordPayload)
        );
        nfcAdapter.setNdefPushMessage(ndefMsg, this);
    }
    

Si les deux appareils utilisent Android 4.4+, au lieu d'utiliser de la Poutre, vous pouvez utiliser En fonction de l'hôte Émulation de Carte (HCE) sur un appareil et Lecteur NFC mode sur l'autre appareil.Lorsque vous combinez ces caractéristiques (c'est à direvous avez un HCE sur-host card emulation service sur un appareil et mettre le second appareil en mode lecture), les deux appareils peuvent communiquer les uns avec les autres à l'aide de la norme ISO 7816-4 unités apdu.L'avantage de ceci est que vous pouvez complètement ignorer l'ennuyeux Faisceau de l'INTERFACE utilisateur.



1) C'est le cas si vous utilisez une version d'Android < 4.4.
2) je suppose un NDEF enregistrement de Texte, non?

Autres conseils

Essayez de l'instanciation de la NfcAdapter et l'appel de la disableForegroundDispatch ou disableReaderMode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top