Android makeReadOnly()引发IOException

Android makeReadOnly()引发IOException,android,nfc,ndef,Android,Nfc,Ndef,对于Android应用程序,我想在NDEF标签上写一条消息,并确保消息之后不能更改。显而易见的解决方案是makeReadOnly()方法,但它总是抛出一个java.io.IOException,而不带消息(null)。 我已经尝试了以下方法: 检查标记是否可写 在标签上写了一条信息 如果理论上可以使标记为只读,请使用canMakeReadOnly()进行检查 在另一个线程中使用makeReadOnly,然后在主线程中使用 使用app tag Writer密封标签,以确保我使用的标签可以完全密封

对于Android应用程序,我想在NDEF标签上写一条消息,并确保消息之后不能更改。显而易见的解决方案是makeReadOnly()方法,但它总是抛出一个java.io.IOException,而不带消息(null)。 我已经尝试了以下方法:

  • 检查标记是否可写
  • 在标签上写了一条信息
  • 如果理论上可以使标记为只读,请使用canMakeReadOnly()进行检查
  • 在另一个线程中使用makeReadOnly,然后在主线程中使用
  • 使用app tag Writer密封标签,以确保我使用的标签可以完全密封
  • 发现IOException是这个方法的默认异常,因此可能错误与I/O()无关,但是那里的答案只是解释了异常不需要是IOException,但它并不能解决问题
下面是相关代码:

                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();
                }
            }
Logcat看起来像这样:

06-10 09:51:04.851  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter D/Schuetzen﹕ makeReadOnly is possible
06-10 09:51:04.851  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter D/Schuetzen﹕ Tag isWritable
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ java.io.IOException
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at android.nfc.tech.Ndef.makeReadOnly(Ndef.java:394)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at net.bits_bremen.bruenjes.gleisteinwriter.myThread.doInBackground(myThread.java:34)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
06-10 09:51:04.898  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter D/myThread﹕ java.io.IOException
06-10 09:51:04.914  32274-14000/net.bits_bremen.bruenjes.gleisteinwriter D/myThread﹕ Tag closed
任何帮助都会很好

可能重复的