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

应用程序如何调度NFC标签

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

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

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

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

标签调度系统的基本工作方法如下:

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

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

3.  如果没有应用程序来处理任何类型的Intent,那么就不做任何事情。

图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是否有效。

转载于:https://www.cnblogs.com/SamuelSun/p/4517543.html

Android近场通信---NFC基础(二)(转)相关推荐

  1. Android近场通信---NFC基础(三)

    Android近场通信---NFC基础(三) 过滤NFC的Intent 要在你想要处理被扫描到的NFC标签时启动你的应用程序,可以在你的应用程序的Android清单中针对一种.两种或全部三种类型的NF ...

  2. Android近场通信---NFC基础(一)

    Android近场通信---NFC基础(一) 本文介绍在Android系通过你所能执行的基本任务。它解释了如何用NDEF消息格式来发送和接收NFC数据,并且介绍了支持这些功能的Android框架API ...

  3. Android近场通信---NFC基础(一)(转)

    转自 http://blog.csdn.net/think_soft/article/details/8169483 本文译自:http://developer.android.com/guide/t ...

  4. Android近场通信---高级NFC(二)

    Android近场通信---高级NFC(二) 读写NFC标签 读写NFC标签,要涉及到从Intent对象中获取标签,并要打开与标签的通信.要读写NFC标签数据,你必须要定义自己的协议栈.但是,要记住在 ...

  5. 九、Android近场通信(NFC)

    Android近场通信(NFC) 前言 项目目录 1.NFC (1)权限 (2)代码MainActivity.activity_main (3)NFC设备 2.AndroidManifest.xml ...

  6. android 近场通信,Android NFC近场通信03----读写MifareClassic卡(示例代码)

    Android NFC近场通信02----读写MifareClassic卡 一.MifareClassic卡 相关 一般来说,给予MifareClassic的射频卡,一般内存大小有3种: 1K: 16 ...

  7. WAPI产业联盟:中国两项近场通信NFC安全技术成国际标准

    日前,从WAPI产业联盟获悉,我国自主创新的近场通信(NFC)非对称实体鉴别(NEAU-A).NFC对称实体鉴别(NEAU-S)两项近场通信安全技术正式成为ISO/IEC国际标准,填补了国际上NFC身 ...

  8. Android近场通信

    一.三种近场通信技术 1.类别 (1)WIFI (2)BlueTooth (3)NFC 2.三大技术的特点 (1)WIFI ​ WiFi(Wireless Fidelity,无线保真技术)即IEEE ...

  9. Android安全 通信篇(二)

    转载自:http://www.52im.net/thread-217-1-1.html 前言 本文深入分析了即时通信(IM)系统中所面临的各种安全问题,综合利用对称加密算法(DES算法).公开密钥算法 ...

最新文章

  1. android service intent-filter,如何在permission中加入intent-filter过滤器获取NotificationListenerService权限...
  2. Ubuntu下VIM使用指南
  3. android jni 回调 java_android linux线程通过JNI回调java函数 | 学步园
  4. Google SSL zz
  5. ubuntu路由器联网_路由器及其协议简介| 联网
  6. gb2312编码表_汉字编码输入系统模型(一)
  7. thinkphp redis队列处理_教你用ThinkPHP中thinkphpqueue
  8. 苹果电脑怎么用_这些朋友更适合苹果电脑,你了解吗?
  9. loadrunner11 post请求接口压力测试并生成报告
  10. ARINC 429 过滤介绍
  11. spotify电脑下载歌曲_Spotify Music Converter
  12. Spring Boot 应用在 kubernetes 的 sidecar 设计与实战
  13. 恢复为TrustedInstaller权限
  14. 机械类和计算机类哪个累哪个难,这几个大学专业累死人还难学,但是毕业却很好就业...
  15. C盘爆满,你的专属清道夫来啦
  16. 吊打面试官系列之:UI自动化面试题汇总,对标P7,从此再也不怕面试官了。
  17. 她全奖赴海外读博,一作发Science,毅然回国后任东南大学教授!
  18. RxSwift核心逻辑
  19. 利用requests库批量下载PDF文件
  20. BulletProof vs snark vs stark性能对比

热门文章

  1. python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. python为什么closed_为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed])...
  3. hashset去重原理_基于simhash的文本去重原理
  4. dataframe转化为array_【Python专栏】12 种高效 Numpy 和 Pandas 函数为你加速分析
  5. C语言开发笔记(六)实参和形参
  6. matlab盒子分形维数_分形维数--matlab
  7. Visual Studio进行linux远程开发
  8. met40如何升级成鸿蒙系统,再见了,EMUI11!你好,华为鸿蒙!
  9. mysql mydumper_MySQL 之mydumper安装详解
  10. 213. 打家劫舍 II golang 动态规划