NFCに関するActionの種類
AndroidでNFCに関するActionは以下の3つがあります。
- ACTION_NDEF_DISCOVERED
- ACTION_TECH_DISCOVERED
- ACTION_TAG_DISCOVERED
NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。
- ACTION_NDEF_DISCOVERED
- タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
- タグの種類によってフィルタリングすることができます。
- IntentのExtra内にNDEFの情報が含まれます。
- 最も優先順位が高いです。
- ACTION_TECH_DISCOVERED
- 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
- タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
- タグの種類によってフィルタリングすることができます。
- ACTION_TAG_DISCOVERED
- 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
- このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
- 一番優先度が低いです。
Actionの優先度とは
タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。
Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。
アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。
カスタマー開発部 山下智樹
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿