2015-04-20 2 views
0

Я хочу отформатировать Mifare Ultralight C для обработки сообщений NDEF. Я написал код ниже, и он отлично работает с чипами Mifare Classic 1K, но он получает IOExeption, когда я пытаюсь подключиться к чипу Ultralight C.Форматирование Mifare Ultralight C в NDEF

NdefFormatable format = NdefFormatable.get(tag) 

    if(format != null){ 
     try { 
      format.connect(); 
      format.format(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null))); 
      format.close(); 
      Toast.makeText(getApplicationContext(), "Tag formated.", Toast.LENGTH_LONG).show(); 
     }catch (IOException e) { 
      // TODO Auto-generated catch block 
      Toast.makeText(getApplicationContext(), "Failed to connect", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 

     } catch (FormatException e) { 
      // TODO Auto-generated catch block 
      Toast.makeText(getApplicationContext(), "Failed Format", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 
     } 
    } 
    else 
     Toast.makeText(getApplicationContext(), "Tag unformatable or already formatted to Ndef.", Toast.LENGTH_LONG).show(); 

} 

Кто-нибудь знает, что может быть ошибка и почему код работает для 1k чипов, а не на Ultralight C? Тег совершенно новый и совершенно пустой.

Это выход в LogCat:

04-21 08:49:27.300: W/System.err(9351): java.io.IOException 
04-21 08:49:27.300: W/System.err(9351):  at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:132) 
04-21 08:49:27.300: W/System.err(9351):  at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:95) 
04-21 08:49:27.300: W/System.err(9351):  at com.example.exjobb.nfc.FormatTag.formatTag(FormatTag.java:69) 
04-21 08:49:27.300: W/System.err(9351):  at com.example.exjobb.nfc.FormatTag.onNewIntent(FormatTag.java:58 
04-21 08:49:27.300: W/System.err(9351):  at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1178) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2418) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread.performNewIntents(ActivityThread.java:2431) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2440) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread.access$1500(ActivityThread.java:159) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1387) 
04-21 08:49:27.300: W/System.err(9351):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-21 08:49:27.300: W/System.err(9351):  at android.os.Looper.loop(Looper.java:176) 
04-21 08:49:27.300: W/System.err(9351):  at android.app.ActivityThread.main(ActivityThread.java:5419) 
04-21 08:49:27.300: W/System.err(9351):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-21 08:49:27.300: W/System.err(9351):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-21 08:49:27.305: W/System.err(9351):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
04-21 08:49:27.305: W/System.err(9351):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
04-21 08:49:27.305: W/System.err(9351):  at dalvik.system.NativeStart.main(Native Method) 
+0

Просьба поделиться stacktrace в logcat – LaurentY

+0

Это пустая (т. Е. Ранее не использовавшаяся) Сверхлегкая бирка C? –

+0

@LaurentY Добавлена ​​функция stacktrace в logcat. –

ответ

2

Я сделал форматирование работы путем добавления другого фильтра к фильтру ForegroundDispatch. До того, как я только отфильтровался для обнаружения тегов, но после добавления Tech discovery, похоже, работает.

IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); 
IntentFilter techDetected = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); 
IntentFilter[] nfcIntentFilter = new IntentFilter[]{tagDetected,techDetected}; 

nfcAdapter.enableForegroundDispatch(this, nfcPendingIntent, nfcIntentFilter, null); 

Не забудьте добавить новый фильтр к методу onNewIntent.

Смежные вопросы