2

我正在使用 Nexus S 测试支持 NFC 的 Android/AIR 应用程序。

我的 NFC 标签上有一个示例 url,例如“http://www.google.com”。

我想捕获标签上的 url(或任何文本)以在应用程序中使用。

当标签被点击时,手机会在浏览器中打开 URL。

我想知道我的清单中是否缺少某些东西,或者链接是否总是由浏览器处理。我查看了文档,甚至为特定 URL 添加了一个方案,但仍然没有运气。

我的清单如下。感谢您的任何意见。

<manifest android:installLocation="auto">
    <uses-permission android:name="android.permission.NFC"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-feature android:name="android.hardware.nfc" android:required="true"/>

    <application android:debuggable="true">
        <activity>
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED"/>                 
                <data android:mimeType="text/plain" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

            <intent-filter>
                <action android:name="android.nfc.action.TAG_DISCOVERED"/>                  
                <data android:mimeType="text/plain" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

            <intent-filter> 
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>
4

1 回答 1

2

NFC 标签上的 URL 与 NFC 标签上的纯文本消息不同。它们有不同的消息类型。您的清单为纯文本消息列出了 2 个意图过滤器(最后一个永远不会被实际触发, TAG_DISCOVERED 意图永远不会包含来自标签的任何数据)。为了匹配您的示例 URL,请尝试:

<intent-filter>
  <action android:name="android.nfc.action.NDEF_DISCOVERED"/>                 
  <data android:scheme="http" android:host="www.google.com" />
  <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

另请参阅http://developer.android.com/guide/topics/nfc/nfc.html#ndef-disc以获得更详细的解释NDEF_DISCOVEREDhttp://developer.android.com/guide/topics/manifest/data- element.html用于完整记录元素中可以包含的<data>内容。

于 2012-05-15T23:11:12.280 回答