Я пытаюсь отправить девятизначное число в NFC Reader, но моя служба, похоже, не запускается. Любая помощь будет принята с благодарностью. Телефон, с которым я тестирую, - это Samsung Galaxy S3, и я использую Eclipse.Почему мое приложение HCE не попадает на мой HCE-сервис?
Вот команда APDU, которую посылает мой NFC-ридер.
F0A40400100F01020304
Вот ответ, который я получил, что означает (я думаю) файл не найден.
6A 82
Вот как построена команда APDU.
private byte CLS = (byte)0x00;
private byte SELECT_INS = (byte)0xA4;
private byte P1 = (byte)0x04;
private byte P2 = (byte)0x00;
private byte[] aid = {0x0F, 0x01, 0x02, 0x03, 0x04};
private Long TIMEOUT = 1000L;
private byte OK = (byte)0x90;
Это моя помощь.
F0010203040506
Вопрос заключается в том, что это даже не доходя до моего HCEservice, так что мой processCommandApdu никогда не вызывается. Моя кошка показывает это.
11-12 15:56:50.175: D/NativeNfcManager(1064): doReceiveData. reutrn..
11-12 15:56:50.175: D/HostEmulationManager(1064): notifyHostEmulationData
11-12 15:56:50.175: D/HostEmulationManager(1064): call findSelectAid - 1
11-12 15:56:50.175: D/NativeNfcManager(1064): mAppletSelectStatus=3
11-12 15:56:50.185: D/NativeNfcManager(1064): Waiting for an APDU...
11-12 15:56:50.195: D/NativeNfcManager(1064): doReceiveData. reutrn..
11-12 15:56:50.195: D/HostEmulationManager(1064): notifyHostEmulationData
11-12 15:56:50.195: D/HostEmulationManager(1064): call findSelectAid - 1
11-12 15:56:50.195: D/HostEmulationManager(1064): Dropping non-select APDU in STATE_W4_SELECT
11-12 15:56:50.195: D/NativeNfcManager(1064): mAppletSelectStatus=3
11-12 15:56:50.205: D/NativeNfcManager(1064): Waiting for an APDU...
11-12 15:56:50.205: D/dalvikvm(10513): GC_CONCURRENT freed 994K, 53% free 8422K/17772K, paused 2ms+6ms, total 48ms
11-12 15:56:50.205: D/dalvikvm(10513): WAIT_FOR_CONCURRENT_GC blocked 39ms
11-12 15:56:50.215: W/SAMMLibraryCore(10513): Not AMS File(Invalid AMS End Marker)
11-12 15:56:50.215: W/SAMMLibrary(10513): Error on load SAMM File Info
11-12 15:56:50.225: D/NativeNfcManager(1064): doReceiveData. reutrn..
11-12 15:56:50.225: D/HostEmulationManager(1064): notifyHostEmulationData
11-12 15:56:50.225: D/HostEmulationManager(1064): call findSelectAid - 1
11-12 15:56:50.225: D/NativeNfcManager(1064): mAppletSelectStatus=3
11-12 15:56:50.225: W/SAMMLibraryCore(10513): Not AMS File(Invalid AMS End Marker)
11-12 15:56:50.225: W/SAMMLibrary(10513): Error on load SAMM File Info
11-12 15:56:50.225: D/NativeNfcManager(1064): Waiting for an APDU...
Вот сервис, который я объявляю в своем AndroidManifest.
<service
android:name=".MyHostApduService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE" >
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
</intent-filter>
<meta-data
android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice" />
</service>
И, наконец, вот моя служба res/xml (папка, которую я создал).
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/servicedesc"
android:requireDeviceUnlock="false" >
<aid-group
android:category="other"
android:description="@string/aiddescription" >
<aid-filter android:name="F0010203040506" />
</aid-group>
</host-apdu-service>
Благодарим за помощь! Проблема заключалась в сочетании AID и команды. – TeeBee