Android: как сделать тег NFC готовым только для пользователей и доступным для записи для меня?

У меня есть приложение, которое разрабатывает персонализированные теги, которые при обнаружении телефоном Android запускают другое приложение с некоторым контентом. Все работает нормально, и я знаю, как сделать тег nfc только для чтения. Проблема в том, что я хотел бы сделать тег NFC доступным для чтения только пользователям другого приложения. Но я также хочу, при необходимости, изменить эти теги, чтобы они были перезаписаны. Но я хочу запретить пользователям делать это самим. поэтому ndef.makeReadOnly() мне не подходит..

кто-нибудь может мне помочь???


person WaitWhat    schedule 27.03.2013    source источник


Ответы (2)


Это несколько зависит от конкретных тегов, которые вы будете использовать. Стандартные типы тегов NFC Forum для хранения сообщений NDEF, поддерживаемые Android, не имеют для этого определенных функций. Таким образом, API Android также не предоставляет его. Есть только makeReadOnly(), что в большинстве случаев делает тег необратимо доступным только для чтения.

Однако, когда вы смотрите на чипы внутри меток, которые фактически реализуют требуемую функциональность NFC, они часто предоставляют больше функций. Эти дополнительные функции могут включать в себя контроль доступа для записи, что позволяет настроить чип по вашему желанию.

Некоторые примеры (все производства NXP, поскольку я наиболее знаком с ними):

  1. MIFARE Classic: секторы памяти защищены двумя ключами. Одна клавиша может быть настроена только для чтения, а другая может использоваться для записи в память. NB: не все устройства Android могут получить к ним доступ!
  2. MIFARE Ultralight C: может обеспечить дополнительную защиту паролем для предотвращения перезаписи.
  3. MIFARE DESFire: можно настроить несколько ключей аутентификации и прав доступа, включая доступ только для чтения без ключей
  4. ICODE SLI(X)-S: может обеспечить дополнительную защиту паролем для предотвращения перезаписи

Большинство из этих тегов, как правило, доступны для продажи в Интернете. Однако вам придется немного покопаться в Интернете, чтобы собрать всю информацию о том, как должна быть выполнена конфигурация. В большинстве случаев имеется программное обеспечение для ПК.

person NFC guy    schedule 29.03.2013

Единственный 100% способ сделать тег NFC «только для чтения» — это вызвать makeReadOnly(), но это необратимо.

Вы можете использовать готовое решение, например:

  1. не записывайте данные в тег NFC, а вместо этого сохраняйте их локально (если данные ограничены одним устройством) или на сервере/облаке (если данные глобальны)

  2. свяжите свой идентификатор тега NFC (getByteArrayExtra(NfcAdapter.EXTRA_ID)) с сохраненными данными

  3. когда тег NFC прочитан, получите его идентификатор и найдите правильные данные через соответствующий источник (локальную или облачную БД)

.. если второе приложение является «сторонним приложением» и не может работать с верхней душой, вы можете зарегистрировать свое собственное приложение для чтения NFC (намерение с правильным фильтром mimeType), а затем передать свои данные (пункт № 3) в основное приложение с помощью sendIntent ( или аналогичный поддерживаемый метод).

Надеюсь, поможет!

person Utisevalec    schedule 27.03.2013