
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:
Der entsprechende Code sieht so aus:
Und das dazugehörige Logcat so:
Ich bin dankbar für jeden Lösungsvorschlag oder auch Alternativen, um das Tag zu versiegeln.
- 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.