タグの書き込み判定処理
タグを書き込む前に取得したタグ情報に
NDEFフォーマットが含まれているか確認する
これは、書き込み対象のタグのフォーマットにより書き込み方法が変わるから
書き込み対象から取得したタグ情報に対して
getTechList()を使うと利用可能なNFCの種類がクラス名として取得できる
この中に
Ndef.class.getName()で取得できるクラス名が含まれているなら
NDEFフォーマットになり
NdefFormatable.class.getName()で取得できるクラス名が含まれているなら
NDEFフォーマットが可能なNDEFFormatableと判定できる
これをソースにすると
try{
List
Array.asList()
については
http://shot606.com/?p=1094
を参考
意味は、配列をリストへ変換する
つまり、tag.getTechList()
で取得した配列をリストに変換して
techList へ格納している
次に書き込みを行うタグへNDEFデータが格納されていているか確認
if(techList.contains(Ndef.class.getName()))
contains()については
http://karetta.jp/book-node/java/230466
を参考にする
意味は、指定した要素が存在するならtrue
今回なら
Ndef.class.getName()で値が取得できたならtrueになる
これで、trueならNDEFが含まれているときの処理を書く
そして、falseだったとき、つまりNDEFでないなら
else if (techList.contains(NdefFormatable.class.getName())){
で判定し、trueなら
NdefFormatableが含まれているときの処理を書く
あとは、catchで例外処理
}catch(RuntimeException e){
Toast.makeText(this,getString(R.string.write_failure),Toast.LENGTH_SHORT).show();
}
これで、例外発生したらToastで表示する