NFC标签Android

NFC标签Android,android,nfc,ndef,Android,Nfc,Ndef,我知道有很多使用android设备读取或写入NFC标签的代码,但这是否可行:如果有WiFi连接,请打开此链接,否则请打开另一个链接?不构建自定义读卡器,而使用内置读卡器 或者我需要使用此设备来应用此功能吗?如果扫描包含URL的NFC标记,Android的默认行为(除非为该URL注册了应用程序)是在web浏览器中打开URL。此外,Android的自动调度系统将只从标签读取第一条NDEF记录(除非有AAR可用)。因此,Android在默认情况下只处理标记上的第一个URL 如果你想实现你想要的行为,你

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


或者我需要使用此设备来应用此功能吗?

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

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

那么你的应用程序的设计是什么呢

  • 您将创建一个NFC标记,该标记包含两个NDEF记录,这两个记录的URI类型众所周知,其中包含两个URL。如果用户的设备上没有安装应用程序,则第一个URL应指向首选URL(在这种情况下,第一个URL将自动在web浏览器中启动)。还要注意,第一个URL应该属于您(即,它应该使用属于您的域名)。否则,您的应用程序可能会干扰使用相同URL的其他应用程序。例如

    +-------------------------------------------------+
    | WKT:URI | http://www.mroland.at/example/noWiFi  |
    +-------------------------------------------------+
    | WKT:URI | http://www.mroland.at/example/hasWiFi |
    +-------------------------------------------------+
    
  • 如果URL来自第一条记录(在我们的例子中是
    http://www.mroland.at/example/noWiFi
    )已检测到。您可以使用清单中的意图过滤器执行此操作:

    <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>
    
    
    
  • 如果您的应用程序是通过
    NDEF\u DISCOVERED
    意图启动的,则您可以检测当前网络状态(即,如果WiFi可用)。如果WiFi可用,您将从NFC标签读取第二条NDEF记录,并发送在web浏览器中启动该URL的意图。否则,您将从第一条记录中获取URL,并发送在web浏览器中启动此URL的意图


  • 您是在编写应用程序,还是只是将URL添加到标记中?若要使其正常工作,您可能需要自己的应用程序来处理此问题。好吧,这样我就可以构建一个正确处理此逻辑的应用程序?非常感谢,但另一个问题是,我是否可以将该逻辑(wifi或3G)添加到NFC标签中,而不是使用阅读器应用程序?您不能。我认为这在我的回答中是清楚的(“你唯一的选择[…]是创建你自己的应用[…])好的,谢谢你,你对我在问题中提到的设备有什么想法吗?不,你不需要那个设备。您可以使用任何Android NFC设备或任何NFC读写器来编写标记。