アプリがNFCタグで起動されているかどうかを確認する方法はありますか?NFCタグでアプリが起動されているかどうか確認してください
アプリを起動するためのnfcタグをプログラミングしています(3番目のアプリを使用)ので、その場合は特定のフラグメントを作成したいのですが、どうすればいいですか?
アプリがNFCタグで起動されているかどうかを確認する方法はありますか?NFCタグでアプリが起動されているかどうか確認してください
アプリを起動するためのnfcタグをプログラミングしています(3番目のアプリを使用)ので、その場合は特定のフラグメントを作成したいのですが、どうすればいいですか?
あなたのアプリケーションのアクティビティにインテントフィルタを追加する必要があります。このフィルタは、nfcイベントによって開始されるアクティビティを登録します。そのフィルタをMIMEタイプまたは技術などに基づいて指定する方法はいくつかあります。 そのアクティビティでは、アクティビティを開始したインテントがnfcインテントである場合はonNewIntent()
とonResume()
にチェックインできます。
public void onNewIntent(Intent newIntent) {
setIntent(newIntent);
// onResume is called afterwards, so we handle intent there
}
public void onResume() {
Intent intent = getIntent();
if (intent != null && NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
Toast.makeText("NFC!", Toast.LENGTH_LONG).show();
// Here you could start your Fragment
}
}
あなたはインテントフィルタなどのために持っているオプションについての公式ドキュメントを確認してください
https://developer.android.com/guide/topics/connectivity/nfc/nfc.html
ありがとうございます。マニフェストでは、プレーンテキストにもフィルタをかけるインテントフィルタを追加し、nfcタグにテキストでレコードを追加しました。たとえ私がnfcタグのテキストを必要としなくても、これは私のアプリケーションを正しく起動するために私が見つけた唯一の方法です – Miche
ここでは、アプリケーションがバックグラウンドに移動し、 setIntent()を使って設定するため、NFCのインテントになります。意図のタグは、私が思うそのシナリオでは使えないでしょう。必要に応じて、処理後にインテント()をMAINランチャーのインテントに戻して、そのようなシナリオを防ぐ必要があります。 – jgriffin
@jgriffinあなたが正しいです、私の実装では、onResume()の終わりにsetIntent(null)を呼び出しますが、これは最適な解決策ではないかもしれません。 – Ridcully
参照[NDEFのAndroidアプリケーションレコード(AAR)とNFCタグを取得](のhttp:// stackoverflowの.com/q/25504418/2425802) –
@MichaelRoland私のnfcタグはAARレコードしか持っていないので、私のアプリはランチされることは確かです。私はタグnfcから他のデータを捕まえたくありません。アプリケーションがnfcタグで起動されている場合、私のコードでどのように理解できますか?ありがとう – Miche
答えを読んだことがありますか(特に最後の段落)?また、AARそのものをフィルタリングする方法については、[この回答](http://stackoverflow.com/a/21186762/2425802)を参照してください。 –