Я пытаюсь запустить свое приложение путем сканирования тега NFC.У меня есть два тега для проверки:
- один (давайте назовем этот «тег A») с одним типом данных URI "http://panasonic.net" и
- другой (позволяетвызовите этот «тег B») с двумя типами данных - URI (с TNF: TNF_WELL_KNOWN и RTD: RTD_URI) «urn: nfc: testing.com/ecm/ecap» и URN (TNF: TNF_EXTERNAL_TYPE) »urn: nfc: ext: testing.com: ecm ".
Примечание. Моя главная цель - заставить работать тег B. Этот тег является моим тестовым тегом, и ему не нужно работать с этим приложением.
В моем манифесте я даю разрешения для NFC, и я добавил XML для списка обнаруженных технологий в манифесте.
В теге фильтра намерений у меня есть следующее:
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT"/>
Без TECH_DISCOVERED
, тег A отображается в списке приложений для автоматического запуска, но тег B. не отображается. При TECH_DISCOVERED
оба тега отображаются в списке.
Исправление: без TECH_DISCOVERED
для тега A и тега B приложение не отображается в списке автозапуска, но без TECH_DISCOVERED
и <data android:scheme="http" android:host="panasonic.net"/>
тег A действительно отображает приложение.вверхв списке автозапуска.Для тега A это правильное поведение, потому что Chrome вступает во владение и запускается автоматически, когда <data ... android:host="panasonic.net"/>
отсутствует.
Далее, я указал некоторые теги данных в фильтре намерений:
<data android:scheme="http" android:host="panasonic.net"/>
<data android:scheme="http" android:host="fake.com"/>
При сканировании тега A приложение отображается в списке.При сканировании тега B приложение не отображается в списке.Это правильное поведение.
Затем я добавляю тег данных к фильтру намерений для тега B:
<data android:scheme="vnd.android.nfc"
android:host="ext"
android:pathPrefix="/com.informationmediary:ecm" />
Здесь у меня возникают проблемы.Я сканирую тег A и тег B, и приложение не отображается в списке автозапуска для обоих.Когда я удаляю теги данных HTTP, оставляя только единицу «vnd.android.nfc», и снова сканирую тег B, приложение все равно не отображается.
Я также пробовал следующие варианты, но безрезультатно:
РЕДАКТИРОВАТЬ: в этот момент я удалил следующее, надеясь заставить работать только тег B:
<data android:scheme="http" android:host="panasonic.net"/>
<data android:scheme="http" android:host="fake.com"/>
1.
<data android:scheme="vnd.android.nfc"
android:host="ext"
android:pathPrefix="/com.informationmediary:ecm" />
2.
<data android:scheme="vnd.android.nfc"
android:host="ext"
android:pathPrefix="/informationmediary.com:ecm" />
3.
<data android:scheme="urn:nfc"
android:host="ext"
android:pathPrefix="/com.informationmediary:ecm" />
4.
<data android:scheme="urn:nfc"
android:host="ext"
android:pathPrefix="/informationmediary.com:ecm" />
5.
<data android:scheme="vnd.android.nfc"
android:host="informationmediary.com"
android:pathPrefix="/ecm/ecap"/>
6.
<data android:scheme="urn:nfc"
android:host="informationmediary.com"
android:pathPrefix="/ecm/ecap"/>
Я пыталсявсе комбинации двух из четырех верхних с двумя нижними: 1 и 5, 1 и 6, 2 и 5, 2 и 6, 3 и 5, 3 и 6, 4 и 5 и 4 и 6
Я сомневался в схеме = "urn: nfc", но все равно попробовал, "схватившись"у соломинки "к этому времени.
Мне нужен тег B, тег A - тестовый.
Я прочитал документацию https://developer.android.com/guide/topics/connectivity/nfc/nfc#ext-type И https://developer.android.com/guide/topics/manifest/data-element#mime инесколько других сообщений на форумах, в которых в основном говорится то же, что и в обзорах developer.android.