,

Android NFCのtech list

AndroidNFCで起動するアプリを作っていたのですが、別のフェリカで起動されるアプリを入れたところ、リストに出なくなりました.いままでandroid.nfc.action.TECH_DISCOVEREDに反応するのがなかったので、android.nfc.action.TAG_DISCOVERED扱いで起動されていたということだろうと、フェリカandroid.nfc.action.TECH_DISCOVEREDに反応させようとして少しはまりました.

NFC Basics
http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
によるとマニフェストにTECH_DISCOVERDに対するインテントフィルターを作成し、メタ情報でtechの種類を定義したXMLファイルを指定する必要があります.そのtechの種類の定義ですが、同じページにこんな例が載っています。


    
        android.nfc.tech.IsoDep
        android.nfc.tech.NfcA        
        android.nfc.tech.NfcB
        android.nfc.tech.NfcF
        android.nfc.tech.NfcV
        android.nfc.tech.Ndef
        android.nfc.tech.NdefFormatable
        android.nfc.tech.MifareClassic
        android.nfc.tech.MifareUltralight
    

とあったので、これですべてのパターンに反応するか思って実行してのですが、リストに出てきません.実は


    
        android.nfc.tech.NfcF
    

としなければでした。
よく読んでみると、複数のtech-listが定義でき、そのいずれかがカードから得られたgetTechListのサブセットになっていた場合、反応するらしいです.

You can also specify multiple tech-list sets. Each of the tech-list sets is considered independently, and your activity is considered a match if any single tech-list set is a subset of the technologies that are returned by getTechList().

ということでNFC Basicsに書いてあるリストは絶対に反応しないものです。読まないのが悪いのですが、紛らわしい。こういう書き方がAndroidっぽいなと思うのは私だけ?
TECH_DISCOVERDに反応があるものを新たにインストールした場合、TAG_DISCOVERDでリストに出ていたものが出なくなるというのは他人のアプリにはめられそうな予感のする仕様ですね。