Я обнаружил, что когда я помещаю 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 там ...), результат не изменится. Это просто откроет браузер. Банкомат работает только на переднем плане ...
Есть идеи?