从NFC标签阅读中启动应用程序

时间:2012-12-20 21:24:06

标签: android android-manifest nfc

我已阅读并阅读,但我无法理解当我触摸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数据编写和读取标记

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

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

如果您想阅读标签,并且您的应用不在前台,那么如果设备上的其他应用已注册处理相同的标签,NFC技术等,您将获得选择对话框。您无法更改此选项,仅如果应用程序通过使用前台调度已经在前台,请确保您的应用程序获得优先级。

答案 2 :(得分:0)

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

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

根据标签的类型,您可能需要过滤标签。例如,要过滤包含指向你自己的网址的标记,你可以将它放在你的意图过滤器中:

           <data android:scheme="http"
            android:host="yourserver.com"
            android:pathPrefix="/"/>