我已阅读并阅读,但我无法理解当我触摸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数据编写和读取标记
我会欢迎一些细节,因为大多数其他帖子提供的内容并不多,而且他们提供的链接让我感到困惑。
答案 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="/"/>