Frage AAR Record in NFC: Wo ist die Nutzlast?


Gemäß diese AntwortWenn Sie mit Android Beam eine NFC-Nachricht mit einem AAR-Datensatz übertragen, wird das empfangende Gerät den Test starten MAIN/LAUNCHER Aktivität für die im AAR angegebene App.

Das MAIN/LAUNCHER  Intent enthält nicht die NfcAdapter.EXTRA_NDEF_MESSAGES extra. Daher scheinen die Daten, die wir durch all das Problem mit dem Überstrahlen durchlaufen haben, verloren zu gehen, wenn Sie AAR verwenden.

Gibt es eine Möglichkeit, die NFC-Nachrichten, die die App ausgelöst haben, in diesem Szenario zu starten?

Und wenn die Antwort "Nein" ist, was ist der Anwendungsfall von AAR? Ich kann sehen, wo es hilfreich sein könnte, wenn die gewünschte App auf dem empfangenden Gerät nicht vorhanden ist (Play Store wird geöffnet), aber sobald die App installiert ist, vereitelt AAR jeden Versuch, Daten von einem Gerät an das andere zu übermitteln irgendwie der Punkt hinter NFC.

Vielen Dank!


8
2018-06-04 19:40


Ursprung


Antworten:


Auf die Gefahr hin, meine eigene Frage zu beantworten, ist ein Rezept, um dies (scheinbar) zum Funktionieren zu bringen:

  • Lassen Sie den Beam-Sender eine NFC-Nachricht mit zwei NFC-Datensätzen verwenden, wobei der erste einen Inhalt für einen eindeutigen MIME-Typ enthält und der zweite der AAR

  • Lassen Sie den Beam-Empfänger ein <intent-filter> auf die Aktivität, die auf den ersten NFC-Datensatz reagiert, z.

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    
            <category android:name="android.intent.category.DEFAULT"/>
    
            <data android:mimeType="application/vnd.commonsware.webbeam"/>
        </intent-filter>
    

Wenn die App bereits existiert, NDEF_DISCOVERED  Intent wird verwendet, und der Empfänger kann die NFC-Nachricht aufnehmen und die Daten aus dem ursprünglichen Datensatz herausziehen. Wenn die App nicht vorhanden ist, wird der AAR aktiviert und der Play Store wird aufgerufen (unabhängig davon, ob Ihre App über den Play Store verteilt wird oder nicht).

Dies ist das gezeigte Rezept im Android Beam-Beispiel auf der Entwicklerseite.


7
2018-06-05 12:50



Aus einem Blick auf die Dokumente scheint der Anwendungsfall zu garantieren, dass Ihre Anwendung von dem NFC-Ereignis gestartet wird. Ein zweiter Anwendungsfall würde dem Telefon im Grunde eine Möglichkeit geben, zu wissen, welche App es benötigt, um ein Tag zu lesen.

Ein paar Fragen Wenn Sie zwei Datensätze verwenden: erstens normal, zweitens AAR, wie wird die Aktivität gestartet? Ich würde erwarten, dass Sie über die Tagversandabsicht gestartet werden. Enthält die AAR-Absicht etwas, das Sie zum Tag bringt? Ich denke du könntest Manua


0
2018-06-04 21:16