不使用特定应用程序读取NFC标签?

4
我想知道是否有任何方法可以将一串文本(URL)保存到一个NFC标签上,比如MIFARE或NTAG203,这样其他设备(智能手机)就可以读取它而无需任何特殊的标签读取应用程序。
我已经测试了几个应用程序,例如Android的Trigger,并注意到如果读取标签的设备没有所需的应用程序来读取标签上的数据/指令,它仍然会打开一个URL,让您进入Play商店下载该应用程序。
因此必须有一种方式可以保存某些数据,使其可被所有/某些NFC启用的手机读取。简单地说,我想为Android创建一个应用程序,可以将数据写入NFC标签,而随机的NFC启用的手机可以读取/打开/执行这些数据。
那么有可能准备一个NFC标签,触发读取设备上的某些操作而不需要特定的应用程序吗?我的应用程序可以在NFC标签上写入哪种类型的数据以实现此目的?
2个回答

6
首先,总的来说,我同意CommonsWare的观点,即处理NFC事件的始终是一个“特殊”的应用程序。然而,在研究Android时,我会将AOSP中的各种平台应用程序视为Android系统的一部分。尽管并非所有设备上都可用。
在查看Android 4.4+时,此类系统应用程序处理以下数据类型:
- 浏览器:带有“http:”和“https:”方案的URI。 - 联系人和拨号器:MIME类型为“text/vcard”和“text/x-vcard”,用于导入联系人。 - 电子邮件:带有“mailto:”方案的URI。
此外,如果没有其他应用程序处理某个标签,则NFC设备应该(?)具有Tag应用程序,该应用程序尝试处理各种类型(经过用户确认):
- 带有“tel”方案的URI将导致ACTION_CALL意图调用给定号码。 - 具有“sms”/“smsto”方案的URI将导致ACTION_SENDTO意图开始编辑短信。 - 其他URI应(?)在ACTION_VIEW意图中转发。 - MIME类型记录类型为“text/x-vcard”的记录(如果尚未处理)应在ACTION_VIEW意图中转发。 - Text RTD记录的文本消息(不是text/* MIME类型!)应在Tag应用程序中显示。不幸的是,许多愚蠢的(!)NFC应用程序注册了Text记录,因此您通常无法进入Tag应用程序。 - MIME类型记录类型为image/*(如果Android支持图像类型)应在Tag应用程序中显示。
一些记录由NFC服务本身处理(这应始终在Android上可用):
- Android应用程序记录(具有类型名称“urn:nfc:ext:android.com:pkg”的NFC Forum外部类型)会导致发送URI为“market://details?id={PACKAGE_NAME}”的ACTION_VIEW意图。 - 具有类型名称“urn:nfc:nokia.com:bt”的NFC Forum外部类型将被解析以进行蓝牙连接交接。 - 以Handover Select RTD记录开头并包含MIME类型记录类型为“application/vnd.bluetooth.ep.oob”的NDEF消息将被解析以进行蓝牙连接交接。

2
一切与NFC有关的都需要一个响应标签的应用程序。无论这是否是“特殊标签阅读应用程序”取决于您个人对“特殊标签阅读应用程序”的定义。
例如,一些Web浏览器将支持以URL为有效载荷的NDEF格式化标签。但这是一个浏览器的事情,而不是操作系统的事情。例如,AOSP浏览器应用程序具有响应以httphttps开头的URL的NDEF格式化标签的清单条目。按照我的“特殊标签阅读应用程序”的定义,AOSP浏览器是一种“特殊标签阅读应用程序”。虽然希望所有支持NFC的设备都会附带支持NDEF格式化标签的Web浏览器,但这并不保证。
如果您的“某些数据”是其他任何内容,则无论是否设置了响应该类型数据的应用程序,都可以使用。在URL之后,下一个最常见的标签有效载荷通过MIME类型进行识别,就像您在Web应用程序中使用的那样,因此,如果安装了支持NDEF且设置为响应您的MIME类型的应用程序,则它将拾取您的数据。这与让Web服务器在某些MIME类型下提供内容没有区别-需要安装一个支持http/https URL(或由浏览器下载的文件)和该MIME类型的应用程序。
如果读取标签的设备没有所需的应用程序来读取标签上的数据/指令,则仍会打开一个URL,该URL会将您发送到Play Store以下载该应用程序。
一个AAR(Android应用程序记录)已添加到写入NDEF格式化标签的NDEF消息中。那是唯一可以被认为是由平台本身处理的NDEF项目,而且只适用于支持Play Store(以及通过Play Store分发的应用程序)的设备。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接