Как управлять доставкой тегов NFC нескольким приложениям

Я хочу создать приложение, которое сохраняет временную метку в базе данных при сканировании своей рабочей партии, содержащей тег NFC. Это будет сделано через IntentService без запуска действия. После второго сканирования другая временная метка будет сохранена в базе данных через IntentService. Никакая деятельность не должна быть начата. Уведомления будет достаточно. Действия могут быть запущены пользователем вручную, чтобы увидеть информацию.

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

Это нормально, если на телефоне нет одного приложения NFC. Но у меня есть другое приложение, которое использует NFC. И когда я сканирую тег, Android показывает мне диалог выбора, какое приложение может обрабатывать тег. Но я не хочу этого каждый раз, когда сканирую тег. Я хочу использовать оба приложения, поэтому я не выбираю значения по умолчанию для тегов.

Итак, вопрос в том, как я могу отсканировать тег и направить его в нужное приложение. Таким образом, тег A будет обрабатываться приложением A, а тег B - приложением B, не каждый раз получая поле выбора.

Я думал, какой должен быть лучший вариант, или, может быть, у кого-то есть отличная идея, как решить эту проблему.

Я учил пару разных решений:

  1. Используйте только доступные для записи теги NDEF и добавьте в него запись приложения Android (AAR). Таким образом, он запустит правильное приложение после сканирования. (Если приложение NFC не активно на переднем плане), это будет означать, что пользователь ограничен технологией тегов и должен написать ее перед использованием.

  2. Позвольте приложению прослушивать все теги NFC, и если тег не связан с задачей, снова отправьте его в систему, чтобы другие приложения могли обрабатывать его. (Не знаю, возможно ли это)

  3. Напишите приложение, которое прослушивает все теги NFC, и пусть пользователь решает, какой тег будет отправлен в какое приложение. Поэтому, когда приложение получает новый тег, оно спрашивает пользователя, какое приложение может обработать тег, и сохраняет значение по умолчанию для этого конкретного тега [по идентификатору или что-то еще] в базе данных. Поэтому в следующий раз он направит намерение в приложение по умолчанию для этого тега. (Или уже есть что-то подобное?)

Надеюсь, этот вопрос немного ясен. Еще я постараюсь прояснить это немного больше, если хотите;-)

Мне очень нравится слышать, что вы думаете об этом. Или, может быть, у вас есть хорошие предложения? Пожалуйста, дайте мне знать.

Заранее спасибо.

1 ответ

Решение

Я успешно использовал схему URL-адреса приложения для этого. Давайте предположим, что ваша схема URL - "kuiperstimestamp".

Тег должен содержать URL-адрес, например:

kuiperstimestamp://ts/20130506T034536.293

Затем вы создаете фильтр намерений для вашего сервиса, который включает data элемент:

<intent-filter>
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="kuiperstimestamp" />
</intent-filter>

Поскольку фильтр намерений довольно специфичен, вы не получите диалоговое окно выбора приложения (если только другое приложение или служба не имеют того же специального фильтра намерений, что маловероятно).

Этот подход менее специфичен для Android, чем использование AAR.

Другие вопросы по тегам