我正在开发NFC应用程序。要启动我的应用程序,我正在使用带有AAR NDEF记录的NDEF标记。
这很好用。但现在我想直接用app阅读标签内容。我怎么能这样做?
(已经有效,当我从手机上取下标签并再次触摸它时,我想取消这一步。)
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nfctagscanner.mobileapps.lt.nfctagscanner" >
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<uses-permission android:name="android.permission.NFC" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".NFCScanActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="nfctagscanner.mobileapps.lt.nfctagscanner" android:host="ext"
android:pathPrefix="/android.com:pkg" />
</intent-filter>
</activity>
</application>
</manifest>
我只想获得NDEF_DISCOVERED意图。但我总是得到action.MAIN / category.LAUNCHER意图与我的调试器。
任何帮助将不胜感激。我基于此做了我的工作:Android / NFC: Get Tag in onCreate() without new Intent
答案 0 :(得分:15)
如果您希望应用程序由您的代码启动并希望接收已解析的NDEF消息,则您的代码应包含以下内容:
一旦你的标签包含正确的NDEF消息,你必须为应该接收标签发现事件的活动和触发它的NDEF消息创建一个适当的意图过滤器:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
或者,如果您使用自定义NFC论坛外部类型:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="vnd.android.nfc"
android:host="ext"
android:pathPrefix="/yourdomain.com:yourtypename"/>
</intent-filter>
如果您的应用 不 {/ 1}}意图过滤器与NDEF消息的第一个记录相匹配在您的代码上 和您的代码包含一个Android应用记录,这是您的清单中声明的第一个活动,它具有NDEF_DISCOVERED
的意图过滤器,并且android.intent.action.MAIN
将开始。因此,该活动并未声明期望NFC意图它将通过android.intent.category.LAUNCHER
(不包含NDEF消息/标记句柄)
答案 1 :(得分:1)
我不知道这是否是正确答案,但我找到了解决办法:
<activity
android:name=".NFCScanActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
</application>
</manifest>