1

我已经阅读和阅读,但我不明白当我触摸 NFC 标签时我需要做什么才能启动应用程序(一个列表弹出 TagWriter 和 {X})

我已将此添加到我的应用程序主活动中(在清单中)

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

我还在application/com.pgsideris.aeglea应用程序中使用 NDEF 数据写入和读取标签

我会欢迎一些细节,因为大多数其他帖子并没有提供太多内容,而且他们提供的链接让我有些困惑。

4

3 回答 3

3

这些应用程序弹出的主要原因是您正在过滤 mimetype “text/plain”,如果您使用该 mimetype 编写了一个 NFC 标签,所有应用程序(包括您自己的应用程序)都将响应该标签。

如果您正确编写了 NFC 标签,可能会发布一些代码来验证这一点,您应该过滤 mimetype “application/com.pgsideris.aeglea”,这会产生以下过滤器:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="application/com.pgsideris.aeglea" />
</intent-filter>
于 2012-12-21T07:41:28.677 回答
2

您的应用程序需要读取标签,还是只需要启动它?如果是后者,Android 提供了一个自定义的 NDEF rectord,您可以在其中指定要启动的确切包(应用程序)。参照,Android 应用记录 (AAR): http: //developer.android.com/reference/android/nfc/NdefRecord.html#createApplicationRecord (java.lang.String )

如果您想读取标签,并且您的应用不在前台,如果设备上的其他应用已注册处理相同的标签、NFC 技术等,您将看到一个选择对话框。您无法更改此设置,只需确保您的如果应用程序已经在前台使用前台调度,则它会获得优先权。

于 2012-12-21T08:50:14.120 回答
0

确保将权限添加到 AndroidManifest.xml:

<uses-permission android:name="android.permission.NFC"></uses-permission>

根据标签的类型,您可能需要过滤标签。例如,要过滤包含指向您服务器的 url 的标签,您可以将其放入您的意图过滤器中:

           <data android:scheme="http"
            android:host="yourserver.com"
            android:pathPrefix="/"/>
于 2012-12-21T02:26:34.250 回答