NFC三种模式NDEF,TECH,TAG

假设在nexus s手机上装了3NFC相应程序(每种应用程序的启动页就是一个activity),分别对应三种过滤器,那么当一个tag靠近时,nexus s究竟选择哪种应用程序来处理呢?按照以下的规则,该规则成为intent发布系统规则:

activity  A中对intent过滤器设置了android.nfc.action.NDEF_DISCOVERED的判断规则;

<intent-filter>

        <action android:name = "android.nfc.action.NDEF_DISCOVERED" />

<data android:mimeType = "text/plain" />

    </intent-filter>

activity  B中对intent过滤器设置了android.nfc.action.TECH_DISCOVERED的判断规则;

    <intent-filter>              

        <action android:name="android.nfc.action.TECH_DISCOVERED" />

    </intent-filter> 

            

   <meta-data android:name="android.nfc.action.TECH_DISCOVERED"

          android:resource="@xml/filter_nfc" /> 

activity  C中对intent过滤器设置了android.nfc.action.TAG_DISCOVERED的判断规则;

  <intent-filter>

       <action android:name="android.nfc.action.TAG_DISCOVERED"/>

       <category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

1、按照优先级(android.nfc.action.NDEF_DISCOVERED优先级最高),会先去判断请求是否满足activity A(因为A用的是NDEF_DISCOVERED)中的intent过滤器规则,先判断请求是否是NDEF_DISCOVERED格式的数据(action name),另外再判断NDEF_DISCOVERED数据的类型(action type),是纯文本还是智能海报,只有与过滤器中两个条件都要求的一致,才会选择activity A来处理。

2、当activity A不满足,则判断activity B来判断,也就是NDEF_DISCOVERED处理不了的则开始找TECH_DISCOVEREDActivity Bintent过滤器中选择了根据TECH_DISCOVERED来过滤,也就是请求tagNFC规范必须满足TECH_DISCOVERED设置的ISO14443-4ISO14443-3A,或者ISO14443-3B种的一种或几种。TECH_DISCOVERED过滤必须要定义一个xml文件来筛选所要支持的tech的模式,根据  <meta-data android:name="android.nfc.action.TECH_DISCOVERED"

          android:resource="@xml/filter_nfc" />  来关联对应的tech过滤器filter_nfc文件。在filter_nfc.xml中,只有符合了<tech-list>….</tech-list>标签之间定义的NFC标准,该activity才会相应,否则则都被activity设置的intent过滤器给pass掉。

 3、当请求intent对于NDEF_DISCOVEREDTECH_DISCOVERED规则都不满足的时候,则intent才开始找intent过滤规则为android.nfc.action.TAG_DISCOVEREDactivity,也就是activity CTAG_DISCOVERED的过滤规则是最不严格的,只要符合NFC规范中的任一种则都会响应,所以在android中,它的优先级是最低的,否则一开始就选择TAG_DISCOVERED来相应,activity无法获得tag更详细的一些信息,比如tag满足的NFC规范或者NDEF类型等。


http://qing.blog.sina.com.cn/1766585715/694bf573330001j4.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值