【问题标题】:Send a url between 2 NFC devices在 2 个 NFC 设备之间发送 url
【发布时间】:2012-03-20 18:09:01
【问题描述】:

我有一个带有 webview 的 android 应用程序。
当 webview 使用某些文本访问 url 时,例如票,然后我想通过 NFC 将 url 发送到另一个 NFC 设备。
我能够将 url 发送到 4 类 NFC 标签,但我不知道如何将其发送到其他 NFC 设备,以便它将使用 url 启动浏览器。
我只是使用以下内容来创建 NDEF

NdefRecord uriRecord = NdefRecord.createUri(url);
NdefMessage message = new NdefMessage(new NdefRecord[] {
            uriRecord            
});

然后用这个来写

ndef.writeNdefMessage(message);

我正在 ICS(在 Galaxy nexus 上)编写应用程序并尝试使用 2.3.6 发送到 Galaxy s2。

任何帮助和指点将不胜感激。

【问题讨论】:

  • galaxy s2有NFC芯片吗?
  • 是的,确实如此,我能够读取 Galaxy s2 上的 nfc 标签

标签: android nfc nfc-p2p


【解决方案1】:

向另一部手机发送 NDEF 消息时,不要使用标签读/写 API,例如 Ndef。相反,您的 NDEF 消息是通过 NFC 点对点传递的。一种方法是在您的ActivityonCreate() 中使用setNdefPushMessageCallback

    NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
    nfc.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback()
    {
        /*
         * (non-Javadoc)
         * @see android.nfc.NfcAdapter.CreateNdefMessageCallback#createNdefMessage(android.nfc.NfcEvent)
         */
        @Override
        public NdefMessage createNdefMessage(NfcEvent event) 
        {
            NdefRecord uriRecord = NdefRecord.createUri(Uri.encode("http://www.google.com/"));
            return new NdefMessage(new NdefRecord[] { uriRecord });
        }

    }, this, this);  

当另一个 NFC 设备靠近并建立点对点连接时,将调用回调。回调然后创建要发送的 NDEF 消息(在您的情况下:webview 中显示的 URL)。

【讨论】:

  • 谢谢,它有效!我确实发现galaxy nexus 4.04和galaxy S2 2.36之间的“连接”有点不稳定。但总的来说,我能够转移网址。
  • 您想尝试将设备相互垂直放置,以便 NFC 天线正确排列。
  • 但是如何在不断开连接的情况下发送多条消息?
  • 你不能 :( 不幸的是,这是 Android API 的当前限制。
  • @Pittfall 你只能发送一个 NdefMessage 但它可以包含多个 NDEF 记录。也许这有帮助...developer.android.com/reference/android/nfc/…
猜你喜欢
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2012-06-04
  • 1970-01-01
相关资源
最近更新 更多