Frage

Hallo, ich habe zwei Samsung Galaxy S4.Ich habe eine NFC-basierte Android-App entwickelt, die einfachen Text an das Kontakttelefon (Zieltelefon) sendet, wenn eine Taste auf dem Telefon berührt wird, auf dem die App ausgeführt wird (Quelltelefon).Mein Problem ist, dass, wenn ich meine App auf dem Quelltelefon ausführe und das Zieltelefon näher an das Quelltelefon bringe, die Standard-App von Samsung startet (Diese App zeigt einen Screenshot der aktuellen Aktivität auf dem Quelltelefon und fordert Sie auf, den Bildschirm zu berühren und dann wird die gleiche Aktivität auf dem Zieltelefon gestartet.Ich möchte dies deaktivieren, damit die von mir entwickelte App problemlos funktioniert.Wie erreiche ich das?

War es hilfreich?

Lösung

Wenn Sie möchten (oder haben auf 1 ) Android-Strahl verwenden, gibt es nein , um den Strahl-Ui zu vermeiden (das ist das Aktivität mit dem kleinen Screenshot Ihrer Aktivität).

Um den Balken (mit dem Strahl-Ui) ordnungsgemäß verwenden zu können, und senden Sie Ihren Text 2 Folgendes:

    .
  1. Aktivieren Sie das Vordergrund-Versandsystem für die Aktivität auf Ihrem Zielgerät, sodass die empfangene NDEF-Nachricht von Ihrer App sofort verarbeitet wird. Sie können dann NDEF-Nachrichten (oder eher NFC-Erkennungsereignisse in der generationspflichtigen Ereignisse Ihrer Aktivität in Ihrer Tätigkeit erhalten. Siehe Diese Antwort , wie Sie es aktivieren können Vordergrundversorgung.
  2. Deaktivieren Sie das Strahlen für die Aktivität auf Ihrem Zielgerät mit so etwas (z. B. in der generakoditicetagcode-Methode der Empfangsaktivität):

    NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    if (nfcAdapter != null) {
        nfcAdapter.setNdefPushMessage(null, this);
    }
    
  3. Ändern Sie die von Ihrem Quellgerät gesendete NDEF-Nachricht an die NDEF-Nachricht, die Sie tatsächlich senden möchten (z. B. eine NDEF-Nachricht, die Ihren Text-Datensatz enthält). Wenn Sie dies nicht tun, sendet Android (standardmäßig) einen Android-Anwendungsdatensatz, der Ihre Standardaktivität erhält, um auf dem Zielgerät gestartet zu werden. Sie können die NDEF-Nachricht so einrichten (z. B. in der generakodicetagcode-Methode der Sending-Aktivität):

    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);
    }
    
  4. Wenn beide Geräte Android 4.4+ verwenden, anstatt Strahl zu verwenden, können Sie Host-basierte Kartenemulation (HCE) auf einem Gerät und NFC-Lesemodus auf dem anderen Gerät. Wenn Sie diese Funktionen kombinieren (d. H. Sie haben einen HCE-On-Host-Karten-Emulationsdienst auf einem Gerät und geben Sie das zweite Gerät in den Reader-Modus ein), können beide Geräte mithilfe von ISO 7816-4-ApDUS miteinander kommunizieren. Der Vorteil davon wäre, dass Sie den ärgerlichen Strahl-Ui vollständig überspringen können.



    1) Das ist der Fall, wenn Sie eine Android-Version <4.4 verwenden.
    2) Ich nehme einen NDEF-Text auf, rechts?

Andere Tipps

Versuchen Sie, das zu instanziieren NfcAdapter und das Aufrufen des disableForegroundDispatch oder disableReaderMode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top