Вопрос

Я хочу, чтобы мое приложение перехватило все теги, обнаруженные по телефону.Таким образом, я хочу проверить UID метка и пройти на намерение позже (показать выбор приложений и т. Д.).

<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
.

Это то, что я в настоящее время имею в моем манифесте, вместе с намерением фильтра для tag_discovered:

<tech-list>
     <tech>android.nfc.tech.NfcA</tech>
     <tech>android.nfc.tech.NfcB</tech>
     <tech>android.nfc.tech.NfcF</tech>
     <tech>android.nfc.tech.NfcV</tech>
     <tech>android.nfc.tech.IsoDep</tech>
     <tech>android.nfc.tech.MifareClassic</tech>
     <tech>android.nfc.tech.Ultralight</tech>
     <tech>android.nfc.tech.Ndef</tech>
     <tech>android.nfc.tech.NdefFormatable</tech>
 </tech-list>
.

Когда я проверяю SmartCard MIFARE, мое приложение вызывается, когда я использую разные теги с ICS NXP ICS, запущен стандартный приложение для тега Android.

Любой намек на то, как я могу убедиться, что я вижу все теги?

Это было полезно?

Решение

PROR OFF, как работает Tech-List - это то, что все перечисленные Tech перечислены вместе, что означает, что намерение передается приложению, если TAG имеет все различные перечисленные Techs. Я не знаю ни о чем делать. То, что вы хотите сделать, это больше:

<tech-list>
    <tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.NfcB</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.NfcF</tech>
</tech-list>
.

и так далее. Это или разные теги, которые вы хотите. (NFCA или NFCB и т. Д.) Теперь некоторые из этих технологий идут вместе, такие как NFCA и Ultralight или NDEF. Так что если вы хотите поймать карту, которая является NFCA и NDEF, вы бы использовали

<tech-list>
    <tech>android.nfc.tech.NfcA</tech>
    <tech>android.nfc.tech.Ndef</tech>
</tech-list>
.

Теперь приложение, которое наиболее близко соответствует Tech на теге, запустится или будет отображаться в меню выбора. Но ndef_discovered получает приоритет над Tech_discovered. Теперь NDEF_Discovered Intent Launcher может быть очень конкретным в том, на каких тегах передаются. В то время как некоторые форматы NDEF (как тип MIME) позволяют «поймать все» фильтры (пример, « / » для MIME), некоторые нет. (вроде для URI отформатированного записи NDEF). Для тех, если есть определенное приложение, прилагаемое к нему, если вы не знаете его и не построете его, вы не сможете гарантировать, что ваше приложение будет запущено. Также я никогда не мог иметь более одного намерения фильтра для меток NDEF (MIME или URI, но не оба). Но это может быть, что я не пробовал достаточно сложно.

И если другое приложение пытается сделать то же самое (поймать как можно больше тегов), вы всегда будете призвать с ним. Таким образом, нет возможности ловить каждый тег, если только у вас есть единственное приложение по телефону. Но форматирование вашего технологического кода, как вы видите выше, получит вам намного ближе.

Другие советы

Вы можете теоретически сделать это с отправкой переднего плана:

http://developer.android.com/Руководство / темы / NFC / Advanced-nfc.html # передний план - рассылка

Вам нужно обрабатывать все типы MIME NDEF_Discovered ( / ), затем все технологии Tech_iscovered Teg Teg, а также Tag_iscovered Intent.Ваше приложение должно быть на переднем плане.Вы не можете гарантировать, что ваше приложение запускается иначе, потому что любое другое приложение всегда может обрабатывать то же самое приложение, что и ваше приложение, и, следовательно, появится выбор активности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top