NDEF makeReadOnly() wirft IOException

  • 0 Antworten
  • Letztes Antwortdatum
HennerB

HennerB

Neues Mitglied
0
Für eine App möchte ich ein Tag einmalig beschreiben und es anschließend mit einem dauerhaften Schreibschutz versehen. Dafür gedacht ist wohl die Methode makeReadOnly(), die bei mir aber leider jedes Mal eine IOExeption wirft. Die Message der Exception ist meistens null aber ab und zu (wie unten im Beispiel) auch "Tag is not ndef". Bislang habe ich folgendes unternommen:

  • Geprüft, ob der Tag beschreibbar ist
  • Den Tag tatsächlich beschrieben
  • Mit canMakeReadOnly() geprüft, ob ich das Tag überhaupt mit einem Schreibschutz versehen kann
  • Die Methode in einem eigenen Thread ausgeführt
  • Ein Tag mit der App Tag-Writer mit einem Schreibschutz versehen, um auszuschließen, dass es an den Tags liegt
  • Herausgefunden, dass IOException auch die Default-Exception der Methode ist, d. h. die Ursache könnte auch woanders liegen

Der entsprechende Code sieht so aus:

Code:
                   try {
                    ndefTag.connect();

                    if(ndefTag.canMakeReadOnly()) {
                        Log.d("Schuetzen", "makeReadOnly is possible");
                    }
                    else {
                        Log.d("Schuetzen", "makeReadOnly is not possible");
                    }

                    if(ndefTag.isWritable())
                    {
                        Log.d("Schuetzen", "Tag isWritable");
                    }

                    ndefTag.makeReadOnly();
                }

                catch (IOException e) {
                    e.printStackTrace();
                    Log.d("myThread", e.toString());
                }

                finally {
                    // Close connection:
                    try {
                        ndefTag.close();
                        Log.d("myThread", "Tag closed");
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                }

Und das dazugehörige Logcat so:

Code:
    06-10 10:34:50.117    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter D/Schuetzen makeReadOnly is possible
06-10 10:34:50.117    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter D/Schuetzen Tag isWritable
06-10 10:34:50.851    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err java.io.IOException: Tag is not ndef
06-10 10:34:50.859    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at android.nfc.tech.Ndef.makeReadOnly(Ndef.java:403)
06-10 10:34:50.859    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at net.bits_bremen.bruenjes.gleisteinwriter.myThread.doInBackground(myThread.java:34)
06-10 10:34:50.867    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-10 10:34:50.890    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-10 10:34:50.890    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-10 10:34:50.898    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-10 10:34:50.914    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-10 10:34:50.921    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter W/System.err at java.lang.Thread.run(Thread.java:856)
06-10 10:34:50.921    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter D/myThread java.io.IOException: Tag is not ndef
06-10 10:34:50.968    2671-4160/net.bits_bremen.bruenjes.gleisteinwriter D/myThread Tag closed

Ich bin dankbar für jeden Lösungsvorschlag oder auch Alternativen, um das Tag zu versiegeln.
 
Zurück
Oben Unten