Ist es möglich, eine app zu starten, wenn ein NFC-tag gescannt wird?
Ich ein NFC-tag. Ich will schreiben, ein Android-Anwendung, die automatisch gestartet und ruft Daten von NFC, wenn der NFC-tag gescannt wird mit dem Telefon.
Diese Arbeit sollte unter der Annahme, dass das Gerät NFC aktiviert ist und dass keine anderen Anwendungen laufen auf dem Handy. Ich fand einige Anwendungen können eine andere Anwendung starten, aber meine Anwendung funktionieren sollte, ohne eine solche zusätzliche Anwendung im hintergrund ausgeführt wird.
Gibt es eine Möglichkeit, um diese Aufgabe zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um Ihre app (eigentlich Aktivität) Schritte beim Scannen eines Tags, müssen Sie einen entsprechenden intent-filter, um Ihre app-manifest.
Wenn Sie möchten, starten Sie die app für nur einen tag, die
TECH_DISCOVERED
Vorsatz-filter ist, was Sie verwenden möchten:Dieser Vorsatz-filter, benötigt man eine weitere XML-Ressource-Datei definiert die tag-Technologien, die Ihre app hören sollte (beachten Sie die
<meta-data ... />
tag außerhalb die intent-filter). Die verfügbaren Technologien sind diejenigen, die im namespaceandroid.nfc.tech.*
derzeit:android.nfc.tech.IsoDep
android.nfc.tech.MifareClassic
android.nfc.tech.MifareUltralight
android.nfc.tech.Ndef
android.nfc.tech.NdefFormatable
android.nfc.tech.NfcA
android.nfc.tech.NfcB
android.nfc.tech.NfcBarcode
android.nfc.tech.NfcF
android.nfc.tech.NfcV
Zu entdecken, jeden tag, erstellen Sie eine XML-Datei wie folgt ein (erstellen Sie die Datei als
xml/nfc_tech_filter.xml
):Beachten Sie, dass Sie nicht unbedingt einbauen, die andere Technologien als
IsoDep
deutet entwederNfcA
oderNfcB
,MifareClassic
impliziertNfcA
,MifareUltralight
impliziertNfcA
, undNdef
/NdefFormatable
entweder bedeutenNfcA
,NfcB
,NfcF
oderNfcV
.Den oben genannten Vorsatz-filter wird ausgelöst, wenn es keine andere app, die hat einen besser passenden intent-filter. Eine bessere übereinstimmung wäre eine übereinstimmung für die Daten auf dem tag. So, zum Beispiel, wenn Ihr tag enthält eine URL (gekapselt in einer NDEF-Nachricht), eine app, die Trigger-URLs erhalten Vorrang vor Ihrem app. Wenn Sie wissen, die Datentyp(en) auf Ihrer tags, können Sie auch fügen Sie einen filter für diese Daten Typ(en). Zum Beispiel passen einfach alle "http://" und "https://" - URL, die Sie verwenden könnten:
Ähnlich, wenn Ihr tag enthält den MIME-Typ "application/vnd.com.Beispiel" könnten Sie verwenden:
Könnte man sogar kombinieren mehrere intent-Filter für eine Aktivität:
Schließlich gibt es noch eine NFC-bezogenen Vorsatz-filter:
Jedoch, würden Sie normalerweise nicht verwenden Sie dieses intent-filter im manifest. Es ist gedacht als ein fall-back nur und wird immer nur ausgelöst werden, wenn es keine andere app, die das auslösen, auf die Technologie oder die gescannten Daten der tag. So gibt es keine Notwendigkeit zum hinzufügen dieser Vorsatz-filter, den Sie bereits Auslöser für die oben genannten
TECH_DISCOVERED
Vorsatz-filter.Fügen Sie folgenden
intent-filter
zu Ihren wichtigstenactivity
tag in derAndroidManifest.xml
Datei.Jetzt, wenn Sie Tippen Sie mit dem NFC-tag an Ihr Telefon, Ihre Anwendung wird aufgerufen und ausgeführt.