Android近场通讯---NFC基础(二)(转)

转自 http://blog.csdn.net/think_soft/article/details/8171256android

 

应用程序如何调度NFC标签ui

当标签调度系统完成对NFC标签和它的标识信息封装的Intent对象的建立时,它会把该Intent对象发送给感兴趣的应用程序。若是有多个应用程序可以处理该Intent对象,就会显示Activity选择器,让用户选择Activity。标签调度系统定义了三种Intent对象,如下按照由高到低的优先级列出这三种Intent对象:spa

1.  ACTION_NDEF_DISCOVERED:这种Intent用于启动包含NDEF负载和已知类型的标签的Activity。这是最高优先级的Intent,而且标签调度系统在任何其余Intent以前,都会尽量的尝试使用这种类型的Intent来启动Activity。.net

2.  ACTION_TECH_DISCOVERED:若是没有注册处理ACTION_NDEF_DISCOVERED类型的Intent的Activity,那么标签调度系统会尝试使用这种类型的Intent来启动应用程序。若是被扫描到的标签包含了不能被映射到MIME类型或URI的NDEF数据,或者没有包含NDEF数据,可是是已知的标签技术,那么也会直接启动这种类型的Intent对象(而不是先启动ACTION_NDEF_DISCOVERED类型的Intent)xml

3.  ACTION_TAB_DISCOVERED:若是没有处理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED类型Intent的Activity,就会启动这种类型的Intent。对象

 

标签调度系统的基本工做方法以下:blog

1.  用解析NFC标签时由标签调度系统建立的Intent对象(ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)来尝试启动Activity;get

2.  若是没有对应的处理Intent的Activity,那么就会尝试使用下一个优先级的Intent(ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)来启动Activity,直到有对应的应用程序来处理这个Intent,或者是直到标签调度系统尝试了全部可能的Intent。it

3.  若是没有应用程序来处理任何类型的Intent,那么就不作任何事情。io

图1.标签调度系统

在可能的状况下,都会使用NDEF消息和ACTION_NDEF_DISCOVERED类型的Intent来工做,由于它是这三种Intent中最标准的。这种Intent与其余两种Intent相比,它会容许你在更加合适的时机来启动你的应用程序,从而给用户带来更好的体验。

 

在Android的Manifest中申请NFC访问

在访问设备的NFC硬件和正确的处理NFC的Intent以前,要在AndroidManifest.xml文件中进行如下声明:

1.  在<uses-permission>元素中声明访问NFC硬件:

<uses-permission android:name="android.permission.NFC" />

2.  你的应用程序所支持的最小的SDK版本。API Level 9只经过ACTION_TAG_DISCOVERED来支持有限的标签调度,而且只能经过EXTRA_NDEF_MESSAGES来访问NDEF消息。没有其余的标签属性或I/O操做可用。API Level 10中包含了普遍的读写支持,从而更好的推进了NDEF的应用前景,而且API Leve 14用Android Beam和额外的方便的建立NDEF记录的方法,向外提供了更容易的把NDEF消息推送给其余设备的方法。

<uses-sdkandroid:minSdkVersion="10"/>

3.  使用uses-feature元素,在Google Play中,以便你的应用程序可以只针对有NFC硬件的设备来显示。

<uses-featureandroid:name="android.hardware.nfc"android:required="true"/>

若是你的应用程序使用了NFC功能,可是相关的功能又不是你的应用程序的关键功能,你能够忽略uses-feature元素,而且要在运行时经过调用getDefaultAdapter()方法来检查NFC是否有效。

相关文章
相关标签/搜索