Исключите не Android-телефоны NXP с NFC (например, Nexus 4/10)
Я создал приложение, которое считывает определенные данные с карточек студента, которые использует наша школа. Прямо сейчас он только читает данные пользователя, но в будущем планируется добавить поддержку для чтения оставшегося кредита.
Проблема в том, что мы используем карты Mifare Classic. Nexus 4 и Nexus 10 (и, возможно, больше устройств) не поддерживают эти карты, поскольку у них есть контроллер Broadcom NFC. Если я прав, приложение не должно давать сбой или создавать проблемы на этих устройствах, но оно ничего не делает.
Есть ли способ как-то исключить эти устройства без контроллера NXP? (По сути, для использования класса MifareClassic требуется функция использования.) Я могу исключить Nexus 4 и 10 через Play Store, но вряд ли это хорошее решение - даже более того, поскольку другие устройства могут начать использовать контроллеры Broadcom, и все они должны быть исключено вручную.
Спасибо! - Амбруос
2 ответа
Вы можете проверить в своем приложении поддержку MIFARE Classic следующим образом:
boolean hasMifare(Context ctx) {
return ctx.getPackageManager().hasSystemFeature("com.nxp.mifare");
}
Нет способа проверить это перед установкой приложения. Но после установки вы можете предупредить пользователя о том, что функциональность вашего приложения будет ограничена из-за отсутствия поддержки MIFARE Classic.
Очевидно, UID все еще может быть прочитан этими телефонами.
Можно ли вообще использовать метки NFC Mifare Classic с Nexus 4 и 10?
ДА! И нет. Хотя классические чипы Mifare не могут быть записаны или полностью прочитаны Nexus 4 или 10, их UID (уникальный идентификационный код) можно обнаружить и прочитать. Таким образом, Mifare Classic Chips можно использовать с Nexus 4 или 10 вместе с приложением, таким как AutomateIt, которое просто использует UID тега для запуска событий / настроек, сохраненных на устройстве. (ReTag & NFC Task Launcher также может просто использовать UID тега, но также имеет возможность записи в доступные для записи теги.) Недостатком этого является то, что, поскольку тег не может быть записан, если у вас более одного из этих типов приложений NFC на вашем телефоне, нажав на тег, появится окно с вопросом, какое приложение вы хотите использовать. Но если вы используете только одно приложение NFC для всех ваших событий тегов / настроек / и т. Д., То это не проблема, и вы можете использовать для этой цели теги Mifare Classic.
Узнайте больше на http://andytags.com/nfc-tags-nexus-4--10-compatibility.html
Я бы посоветовал вам попытаться использовать те же принципы, которые используются в программировании прогрессивных веб-улучшений, и использовать защитные условия, заключенные в блоки try / catch для защиты от каждой маленькой функции / предположения, вместо фильтрации по имени / бренду.
Таким образом, если какой-либо производитель создает неисправные теги, или пользователь пытается сканировать два тега одновременно по ошибке, или если пользователь слишком быстро удаляет телефон до завершения сканирования, или что-то еще произойдет в будущем, ваш Приложение сможет легче справляться с такими типами ошибок.