Обнаружение NFC различно для Android 2.3.6 и 4.x - PullRequest
2 голосов
/ 05 февраля 2012

Я обнаружил, что когда я помещаю Nexus S (под управлением Android 2.3.6) рядом с тегом NFC, который содержит сообщение NDEF с URI-записью, указывающей на веб-сайт, это вызовет (как и ожидалось), что Выбор активности NFC показан (так как у меня установлено несколько приложений для чтения NFC, и я работаю над своим собственным приложением, которое также перехватывает обнаруженные теги NFC).

Однако при использовании Galaxy Nexus (Android v4, Ice Cream Sandwich) средство выбора активности НЕ появляется. Он просто запустит браузер. LogCat покажет это:

D/NfcService(438): TAG: Tech [android.nfc.tech.MifareUltralight, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
I/ActivityManager(196): START {flg=0x10008000 cmp=com.android.nfc3/com.android.nfc.NfcRootActivity (has extras)} from pid 438
I/ActivityManager(196): START {act=android.nfc.action.NDEF_DISCOVERED dat=http://www.someURL.com/someotherstuff cmp=com.google.android.browser/com.android.browser.BrowserActivity (has extras)} from pid 438

Так что это дает мне два вопроса:

a) Android 2.3.6 и 4.x решили вести себя по-разному, потому что ...?

b) Даже когда я пытаюсь ограничить свое приложение совпадением только с тегами NFC, которые содержат хост www.someURL.com, то есть, поставив

<data
    android:host="www.someURL.com"
    android:pathPattern="/*"
    android:scheme="http" />

в мои 3 фильтра намерений (один для TAG_DISCOVERED, один для TECH_DISCOVERED, один для NDEF_DISCOVERED, я действительно пытаюсь привлечь внимание селектора активности NFC там ...), результат не изменится. Это просто откроет браузер. Банкомат работает только на переднем плане ...

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Вы, вероятно, должны использовать «android: pathPrefix» вместо «android: pathPattern».Вы подходите 0 или более вхождений "/"...

2 голосов
/ 05 февраля 2012

Ваши наблюдения верны:

a) Android 2.3.6 и 4.x решают вести себя по-разному, потому что ...?

Потому что с Android 4.0.x поведение входящих NDEF-сообщений было оптимизировано для лучшего взаимодействия с пользователем.Android обнаруживает несколько типов сообщений и передает данные непосредственно во встроенные приложения.

Я почти уверен, что это сделано для записей URI, которые отправляются в браузер, и сообщений VCard, которые отправляются в приложение контактов, но могут быть и другие сообщения.

Вы можетепереопределите это встроенное поведение, включив диспетчеризацию переднего плана и , когда ваше приложение работает с фокусом.

...