Android近场通信---NFC基础(二)(转)
转自 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基础(二)(转)相关推荐
- Android近场通信---NFC基础(三)
Android近场通信---NFC基础(三) 过滤NFC的Intent 要在你想要处理被扫描到的NFC标签时启动你的应用程序,可以在你的应用程序的Android清单中针对一种.两种或全部三种类型的NF ...
- Android近场通信---NFC基础(一)
Android近场通信---NFC基础(一) 本文介绍在Android系通过你所能执行的基本任务。它解释了如何用NDEF消息格式来发送和接收NFC数据,并且介绍了支持这些功能的Android框架API ...
- Android近场通信---NFC基础(一)(转)
转自 http://blog.csdn.net/think_soft/article/details/8169483 本文译自:http://developer.android.com/guide/t ...
- Android近场通信---高级NFC(二)
Android近场通信---高级NFC(二) 读写NFC标签 读写NFC标签,要涉及到从Intent对象中获取标签,并要打开与标签的通信.要读写NFC标签数据,你必须要定义自己的协议栈.但是,要记住在 ...
- 九、Android近场通信(NFC)
Android近场通信(NFC) 前言 项目目录 1.NFC (1)权限 (2)代码MainActivity.activity_main (3)NFC设备 2.AndroidManifest.xml ...
- android 近场通信,Android NFC近场通信03----读写MifareClassic卡(示例代码)
Android NFC近场通信02----读写MifareClassic卡 一.MifareClassic卡 相关 一般来说,给予MifareClassic的射频卡,一般内存大小有3种: 1K: 16 ...
- WAPI产业联盟:中国两项近场通信NFC安全技术成国际标准
日前,从WAPI产业联盟获悉,我国自主创新的近场通信(NFC)非对称实体鉴别(NEAU-A).NFC对称实体鉴别(NEAU-S)两项近场通信安全技术正式成为ISO/IEC国际标准,填补了国际上NFC身 ...
- Android近场通信
一.三种近场通信技术 1.类别 (1)WIFI (2)BlueTooth (3)NFC 2.三大技术的特点 (1)WIFI WiFi(Wireless Fidelity,无线保真技术)即IEEE ...
- Android安全 通信篇(二)
转载自:http://www.52im.net/thread-217-1-1.html 前言 本文深入分析了即时通信(IM)系统中所面临的各种安全问题,综合利用对称加密算法(DES算法).公开密钥算法 ...
最新文章
- android service intent-filter,如何在permission中加入intent-filter过滤器获取NotificationListenerService权限...
- Ubuntu下VIM使用指南
- android jni 回调 java_android linux线程通过JNI回调java函数 | 学步园
- Google SSL zz
- ubuntu路由器联网_路由器及其协议简介| 联网
- gb2312编码表_汉字编码输入系统模型(一)
- thinkphp redis队列处理_教你用ThinkPHP中thinkphpqueue
- 苹果电脑怎么用_这些朋友更适合苹果电脑,你了解吗?
- loadrunner11 post请求接口压力测试并生成报告
- ARINC 429 过滤介绍
- spotify电脑下载歌曲_Spotify Music Converter
- Spring Boot 应用在 kubernetes 的 sidecar 设计与实战
- 恢复为TrustedInstaller权限
- 机械类和计算机类哪个累哪个难,这几个大学专业累死人还难学,但是毕业却很好就业...
- C盘爆满,你的专属清道夫来啦
- 吊打面试官系列之:UI自动化面试题汇总,对标P7,从此再也不怕面试官了。
- 她全奖赴海外读博,一作发Science,毅然回国后任东南大学教授!
- RxSwift核心逻辑
- 利用requests库批量下载PDF文件
- BulletProof vs snark vs stark性能对比
热门文章
- python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...
- python为什么closed_为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed])...
- hashset去重原理_基于simhash的文本去重原理
- dataframe转化为array_【Python专栏】12 种高效 Numpy 和 Pandas 函数为你加速分析
- C语言开发笔记(六)实参和形参
- matlab盒子分形维数_分形维数--matlab
- Visual Studio进行linux远程开发
- met40如何升级成鸿蒙系统,再见了,EMUI11!你好,华为鸿蒙!
- mysql mydumper_MySQL 之mydumper安装详解
- 213. 打家劫舍 II golang 动态规划