最終更新:
moonlight_aska 2012年09月17日(月) 00:59:04履歴
NFCカード/タグにNdefメッセージを書き込み可能かチェックするには, NFCカード/タグがNdefに対応している必要があるので, インテント"android.nfc.action.NDEF_DISCOVERED"が発行されることを利用する.
注) Ndefに未対応のNFCカード/タグでは, インテント"android.nfc.action.NDEF_DISCOVERED"は発行されない.

注) Ndefに未対応のNFCカード/タグでは, インテント"android.nfc.action.NDEF_DISCOVERED"は発行されない.
- Nfc03.java
- Intent#getIntentメソッドで, Intentのインスタンスを取得する.
- インテントのアクションが, "ACTION_NDEF_DISCOVERED"かチェックする.
- Intent#getParcelableArrayExtraメソッドに, NfcAdapter.EXTRA_TAGを指定して, Tagのインスタンスを取得する.
- Ndef#getメソッドで, Ndefのインスタンスを取得する.
- Ndef#connectメソッドで, NFCカード/タグに接続する.
- Ndef#isWritableメソッドで, NFCカード/タグに書き込み可能がチェックする.
- Ndef#closeメソッドで, 接続を終了する.
package com.moonlight_aska.android.nfc03;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.os.Bundle;
import android.widget.TextView;
public class Nfc03 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nfc03);
TextView text = (TextView)findViewById(R.id.tag_id);
// インテントの取得
Intent intent = getIntent();
// NDEF対応カードの検出かチェック
String action = intent.getAction();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
// 書き込み可能かチェック
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Ndef ndef = Ndef.get(tag);
String str = "";
try {
ndef.connect();
if (ndef.isWritable()) {
str = "The tag is Writable.";
}
else {
str = "The tag isn't writable.";
}
ndef.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
text.setText(str);
}
}
}
- AndroidManifest.xml
- 動作例

コメントをかく