2017-04-04 12 views
0

アプリがNFCタグで起動されているかどうかを確認する方法はありますか?NFCタグでアプリが起動されているかどうか確認してください

アプリを起動するためのnfcタグをプログラミングしています(3番目のアプリを使用)ので、その場合は特定のフラグメントを作成したいのですが、どうすればいいですか?

+0

参照[NDEFのAndroidアプリケーションレコード(AAR)とNFCタグを取得](のhttp:// stackoverflowの.com/q/25504418/2425802) –

+0

@MichaelRoland私のnfcタグはAARレコードしか持っていないので、私のアプリはランチされることは確かです。私はタグnfcから他のデータを捕まえたくありません。アプリケーションがnfcタグで起動されている場合、私のコードでどのように理解できますか?ありがとう – Miche

+0

答えを読んだことがありますか(特に最後の段落)?また、AARそのものをフィルタリングする方法については、[この回答](http://stackoverflow.com/a/21186762/2425802)を参照してください。 –

答えて

0

あなたのアプリケーションのアクティビティにインテントフィルタを追加する必要があります。このフィルタは、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

+0

ありがとうございます。マニフェストでは、プレーンテキストにもフィルタをかけるインテントフィルタを追加し、nfcタグにテキストでレコードを追加しました。たとえ私がnfcタグのテキストを必要としなくても、これは私のアプリケーションを正しく起動するために私が見つけた唯一の方法です – Miche

+0

ここでは、アプリケーションがバックグラウンドに移動し、 setIntent()を使って設定するため、NFCのインテントになります。意図のタグは、私が思うそのシナリオでは使えないでしょう。必要に応じて、処理後にインテント()をMAINランチャーのインテントに戻して、そのようなシナリオを防ぐ必要があります。 – jgriffin

+0

@jgriffinあなたが正しいです、私の実装では、onResume()の終わりにsetIntent(null)を呼び出しますが、これは最適な解決策ではないかもしれません。 – Ridcully

関連する問題