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 エラーをキャプチャする方法はありますか?