0

Ndef.writeNdefMessage を使用して NFC タグに書き込みを行っているときに、catch ブロックで IOException エラーが発生します。Logcat を確認すると、PhLibNfc_Ndef_Write 関数が NFCSTATUS_INSUFFICIENT_STORAGE エラーをトリガーし、実質的に IOException をトリガーしたことが示されました。アプリ層でこの NFCSTATUS_INSUFFICIENT_STORAGE エラーをキャッチする方法はありますか。私はたくさんグーグルで検索しましたが、常に PhLibNfc_Ndef_Write 関数のソース コードに行き着きました。

タグへの書き込みに使用するコード

final NdefMessage  message = new NdefMessage(bytearray);
final NdefFormatable ndefFormatable = NdefFormatable.get(tag);
if(ndefFormatable == null){
final Ndef ndef = Ndef.get(tag);
ndef.connect();
if(ndef.isConnected() && ndef.isWritable()){
    new Thread(new Runnable() {
        public void run() {
            try {
                // this logic is not working. Status quo remains
                int actlen = ndef.getMaxSize();
                if (actlen < arrayLen) {
                    Toast.makeText(tagHandler.this, "Space not available", 20).show();
                }
                ndef.writeNdefMessage(message); <-- error is triggered here
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }).start(); //runnable
ndef.close();
return true;
}

私が遭遇したlogcatエラー

E/NFC JNI(705): phLibNfc_Ndef_Write() returned 0x001f[NFCSTATUS_INSUFFICIENT_STORAGE]
W/System.err(547): java.io.IOException
W/System.err(547):  at android.nfc.tech.Ndef.writeNdefMessage(Ndef.java:313)
W/System.err(547):  at com.example.tagreader.tagHandler$2.run(tagHandler.java:270)
W/System.err(547):  at java.lang.Thread.run(Thread.java:856)

NFCSTATUS_INSUFFICIENT_STORAGE エラーをキャプチャする方法はありますか?

4

1 に答える 1

1

タグに書き込む前getMaxSize()に、Ndefテクノロジーを呼び出します。これにより、メッセージが適合するかどうかがわかり、IOException が完全に防止されます。

于 2012-10-11T13:28:48.693 に答える