同様の質問 - Android で検出された NFC タグ (NDEF コンテンツ) の詳細を読み取る方法は?
Android アプリで、検出された NDEF メッセージを読み取って解析できるようにしたいと考えています。
AndroidManifest.xml を編集して nfc タグを検出し、次のようなインテント フィルターを追加しました。
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
SDK に付属の NFCDemo サンプル アプリを使用して MockNDEFtag を作成すると、これらの生成されたタグを処理するために選択できるアプリケーションのリストが表示されるので、これで問題ないと思います。次にアプリをクリックすると、問題なく開きます。必要なのは、NDEF メッセージで渡されたデータを読み取る方法だけです。コード:
Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
// get NDEF tag details
Ndef ndefTag = Ndef.get(myTag);
...
NdefMessage ndefMesg = ndefTag.getCachedNdefMessage();
同様の質問で提案され、ウェブ全体で多くの同様の回答が見つかりました。私の問題はコード行にあります
"Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG);"
「nfcintent を解決できません」というエラーが表示されますが、コードの作成者が nfcintent をアプリ固有のインテントのプレースホルダーとして配置している可能性が高いことに気付きましたが、その場所に何を配置すればよいかわかりません。
アプリを起動するメインアクティビティは次のようになります
public class TabsActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
// Tab for Graph
TabSpec graphspec = tabHost.newTabSpec("Graph");
// setting Title and Icon for the Tab
graphspec.setIndicator("Graph");
Intent graphIntent = new Intent(this, GraphActivity.class);
graphspec.setContent(graphIntent);
// Tab for Intro
TabSpec introspec = tabHost.newTabSpec("Intro");
introspec.setIndicator("Intro");
Intent introIntent = new Intent(this, IntroActivity.class);
introspec.setContent(introIntent);
// Adding all TabSpec to TabHost
tabHost.addTab(introspec); // Adding intro tab
tabHost.addTab(graphspec); // Adding graph tab
}
}
これでアプリが起動すると、NFCタグを処理する必要があると思います。タグから NDEFMessage にアクセスできれば、Android サンプル アプリの NdefMessageParser で解析できます。NDEFmessage からの情報を解析し、最終的にアプリの各タブからその情報にアクセスできるようにしたいと考えています。