NFC标签Android

时间:2014-03-27 10:52:25

标签: android nfc ndef

我知道有很多代码可以使用Android设备在NFC标签上读取或写入,但这是可行的:如果有WiFi连接打开此链接,否则打开另一个链接?没有构建自定义阅读器,并使用内置阅读器?

或者我是否需要使用此设备http://www.amazon.com/uFR-RFID-Reader-Writer-Programmer/dp/9896740054/ref=sr_1_8?ie=UTF8&qid=1395842599&sr=8-8&keywords=ACR122U来应用此功能?

1 个答案:

答案 0 :(得分:1)

如果您扫描包含网址的NFC标记,则Android的默认行为(除非为该网址注册的应用)是在网络浏览器中打开网址。此外,Android的自动调度系统只会从标签读取第一个NDEF记录(除非有可用的AAR)。因此,Android默认只处理标记上的第一个URL。

你唯一的选择 - 如果你想实现你想要的行为 - 是创建你自己的应用程序(这很好,顺便说一句,否则你的问题可能会在stackoverflow上偏离主题)。

那么你的应用程序的设计可能是什么?

  1. 您将创建一个NFC标记,其中包含两个包含两个URL的已知类型URI的NDEF记录。如果您的应用未安装在用户的设备上,则第一个应指向首选URL(在这种情况下,第一个URL将自动在Web浏览器中启动)。另请注意,第一个URL应属于您(即它应使用属于您的域名)。否则,您的应用可能会干扰使用相同网址的其他应用。 E.g。

    +-------------------------------------------------+
    | WKT:URI | http://www.mroland.at/example/noWiFi  |
    +-------------------------------------------------+
    | WKT:URI | http://www.mroland.at/example/hasWiFi |
    +-------------------------------------------------+
    
  2. 如果检测到第一条记录(在我们的案例中为http://www.mroland.at/example/noWiFi)的网址,您会注册自动启动的应用。您可以在清单中使用这样的intent过滤器执行此操作:

    <activity ...>
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http"
                  android:host="www.mroland.at"
                  android:pathPrefix="/example/noWiFi" />
        </intent-filter>
    </activity>
    
  3. 您的应用程序由NDEF_DISCOVERED意图启动,您可以检测当前的网络状态(即WiFi是否可用)。如果WiFi可用,您将从NFC标签读取第二条NDEF记录,并发送意图以在Web浏览器中启动该URL。否则,您将从第一条记录中获取URL并发送意图以在Web浏览器中启动此URL。