Formatting a Mifare Ultralight C to NDEF

只谈情不闲聊 提交于 2020-01-17 04:26:06

问题


I want to format a Mifare Ultralight C to handle NDEF messages. I have written the code below and it works just fine with the Mifare Classic 1K chips but it gets an IOExeption when i try and connect to the Ultralight C chip.

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();

}

Does anyone know what the error might be and why the code works for the 1k chips and not the Ultralight C? The tag is brand new and completely blank.

This is the output in 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)

回答1:


I made the formating work by adding an other filter to the ForegroundDispatch filter. Before i was only filtering for a tag discovery but after adding Tech discovery it seems to be working.

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);

Don't forget to add the new filter to your onNewIntent Method.



来源:https://stackoverflow.com/questions/29745097/formatting-a-mifare-ultralight-c-to-ndef

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!