#android
#Android
Вопрос:
У меня есть nexus-s, и у меня есть тег nfc со следующими данными, записанными в нем:
http://www.example.com/abc
Когда nexus-s обнаруживает тег, я получаю список из двух приложений, которые могут обрабатывать чтение тега:
tags (included with the nexus-s I think)
MyTagReadingApp (my own demo app)
Это манифест для моего демонстрационного приложения:
<activity
android:name=".activities.ActivityReadTag"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Итак, мое приложение вызывается каждый раз, когда считывается любой тег nfc. Я хочу, чтобы он отображался только в списке приложений, которые могут обрабатывать чтение тега, если в теге есть данные URL, и это часть моего конкретного www.example.com домен. Что-то вроде:
<activity
android:name=".activities.ActivityReadTag"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="http"
android:host="www.example.com"
android:pathPattern="/" />
</intent-filter>
</activity>
Я надеялся, что тег здесь сработает, но, похоже, нет. Этот метод работает для URL-адресов в других местах, например, для гиперссылок. Не уверен, поддерживает ли sdk это еще?
Спасибо
——— Обновить —————
Просматривая DDMS, я вижу следующее при установлении контакта с тегом:
Starting: Intent {
act=android.nfc.action.NDEF_DISCOVERED
dat=http://example.com/foo/1234 flg=0x10000000 (has extras)
} from pid 246
Starting: Intent {
flg=0x10000000 cmp=com.android.nfc3/com.android.nfc.TechListChooserActivity
(has extras)
} from pid 246
итак, я попытался обновить свой манифест до:
<activity
android:name=".activities.ActivityReadTag"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action
android:name="android.nfc.action.NDEF_DISCOVERED" />
все еще безуспешно. Я использую api 10 (2.3.3).
Ответ №1:
Странно, что это отлично работает на моем nexus S. Может быть, это то, что содержится в вашем намерении
dat=http://example.com/foo/1234 flg=0x10000000 (has extras)
однако ваше приложение будет реагировать только на WWW.example.com . Я создал тег с example.com и приложение больше не отвечало.
Ответ №2:
Попробуйте добавить действие android:name=»android.intent.action.ПРОСМОТР «
иначе ваше приложение не будет отображаться в appchooser
Остальная часть фильтра выглядит нормально для меня