在没有特定应用的情

时间:2014-05-08 15:44:20

标签: android tags nfc ndef

我想知道是否有任何方法可以将一串文本(URL)保存到NFC标签,让我们说MIFARE或NTAG203,可以被其他设备(智能手机)读取而无需任何特殊标签读取应用。

我测试了几个应用程序,例如触发Android,并注意到如果读取标签的设备没有所需的应用程序来读取标签上的数据/指令,它仍会打开一个URL,将您发送到Play商店以下载该应用程序。

因此必须有一种方法可以保存所有/部分NFC手机可读的数据。简单地说,我想为Android创建一个applcation,它将数据写入NFC标签,并且可以通过随机的NFC手机读取/打开/执行数据。

那么是否可以准备一个NFC标签,在不需要特定应用的情况下触发读取设备上的某些操作?我可以使用我的应用程序在NFC标签上写入哪种类型的数据来实现此目的?

2 个答案:

答案 0 :(得分:5)

首先,总的来说,我同意CommonsWare的观点,即它总是一个处理NFC事件的“特殊”应用程序。但是,在研究Android时,我会将AOSP的各种平台应用视为Android系统的一部分。即使并非所有设备都可以在所有设备上使用它们。

展望Andrid 4.4+,以下数据类型由此类系统应用程序处理:

  • 浏览器:带有方案“http:”和“https:”的URI。
  • 联系人和拨号程序:用于导入联系人的MIME类型“text / vcard”和“text / x-vcard”。
  • 电子邮件:方案为“mailto:”的
  • 的URI

此外,如果没有其他应用程序处理某个标记,NFC设备应该(?)有标记应用程序,尝试处理各种类型(在用户确认后):

  • 带有方案“tel”的URI将导致ACTION_CALL意图调用给定的数字。
  • 带有方案“sms”/“smsto”的URI将导致ACTION_SENDTO意图开始编辑SMS消息。
  • 其他URI应该(?)在ACTION_VIEW意图中转发。
  • 类型为“text / x-vcard”的MIME类型记录(如果尚未处理)应在ACTION_VIEW意图中转发。
  • 文本RTD记录的文本消息(不是text / * MIME类型!)应显示在Tag应用程序中。不幸的是,许多愚蠢的(!)NFC应用程序注册了文本记录,因此您通常无法访问Tag应用程序。
  • 类型为image / *的MIME类型记录(如果Android支持图像类型)应显示在Tag应用程序中。

有些记录由NFC服务本身处理(这应该始终在Android上提供):

  • Android应用程序记录(类型名称为“urn:nfc:ext:android.com:pkg”的NFC论坛外部类型)导致具有URI“market:// details?id = {PACKAGE_NAME}”的ACTION_VIEW意图为发送。
  • 解析类型名称为“urn:nfc:nokia.com:bt”的NFC论坛外部类型以进行蓝牙连接切换。
  • 解析以切换选择RTD记录开头且包含“application / vnd.bluetooth.ep.oob”类型的MIME类型记录的NDEF消息进行蓝牙连接切换。

答案 1 :(得分:2)

NFC的所有内容都涉及响应标签的应用程序。这是否是一个特殊的标签阅读应用程序"取决于你自己对"特殊标签阅读应用程序"。

的个人定义

例如,某些 Web浏览器将支持NDEF格式的标记,其中有效负载是URL。但这是一个浏览器的东西,而不是操作系统的东西。例如,AOSP浏览器应用manifest entry可以响应NDEF格式的代码,其中的网址以httphttps开头。根据我对#34;特殊标签阅读应用程序"的定义,AOSP浏览器是一个特殊标签阅读应用程序"。虽然希望所有支持NFC的设备都将附带支持NDEF格式标签的Web浏览器,但这并不能保证。

如果您的某些数据"是其他任何东西,无论是否有一个应用程序设置为响应这种数据。在URL之后,通过MIME类型识别下一个最常见的标记有效负载,就像您使用Web应用程序一样,所以如果,则安装了支持NDEF的应用程序设置为响应您的MIME类型,它将获取您的数据。这与让您的Web服务器以某种MIME类型提供内容没有什么不同 - 需要安装一个应用程序来支持http / https URL(或浏览器下载的文件)和MIME类型

  

如果阅读标签的设备没有所需的应用程序来读取标签上的数据/说明,它仍会打开一个URL,将您发送到Play商店以下载该应用程序

AAR(Android应用程序记录)被添加到写入NDEF格式标记的NDEF消息中。这是唯一可以被认为由平台本身处理的NDEF项目,并且仅适用于支持Play商店的设备(以及通过Play商店分发的应用)。