В настоящее время я разрабатываю приложение для Android (на JAVA) для смартфонов NFC. Я пытаюсь связаться с тегом Nfca, но продолжаю получать TagLostException
независимо от команды, которую я отправляю через transceive(byte[])
. Тег хорошо подключен к устройству.
Вот важный фрагмент кода:
public void onNewIntent(Intent intent) {
setIntent(intent);
tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // get the tag object for the discovered tag
nfca = NfcA.get(tag); // try and get the instance for this tag
if(nfca == null) {
Alert("tag","the tag is not NfcA");
} else {
new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1); //this will call handleMessage function and handle all error
}
}).start();
}
}
final Handler handler = new Handler() {
//handles the connection with the tag
@Override
public void handleMessage(final Message msgs) {
// try to connect to the NfcA tag
try {
nfca.connect();
} catch(IOException e) {
Alert("nfca.connect","cannot open connection ><");
}
Toast.makeText(NfcaActivity.this, "tag connected", Toast.LENGTH_LONG).show();
}
};
try {
//nfca.setTimeout(3000);
pageBuffer = nfca.transceive(command);
} catch(IOException e) {
Alert("pageBuffer","cannot perform transceive "+ e.toString());
} catch(Exception e) {
Alert("exception!", e.toString());
}
Я пытаюсь выполнить следующую команду: {00 CA 42 08 00}
или {00 A4 00 00 02 3F00}
, но получаю те же результаты.
Эти команды работают, когда я использую устройство для чтения смарт-карт и программное обеспечение на моем ПК. Смарт-карта не пуста.
1 ответ
Я полагаю, что на карте тоже доступна технология IsoDep
? Если это так, вам следует подключиться, используя это. Одна из перечисленных вами команд выглядит как APDU ISO 7816-4 для выбора главного файла. Предполагается, что это будет использоваться с картами ISO 14443-4, что и представляет собой технология IsoDep
.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.
IsoDep
(так же, как вы использовалиNfcA
; просто замените эту строку в своем коде наIsoDep
).