使用NDEF Android应用程序记录(AAR)获取NFC标记
我正在处理一个NFC应用程序。为了启动我的应用程序,我使用了一个NDEF标签,里面有一个AAR NDEF记录 这个很好用。但现在我想直接用应用程序读取标签内容。我该怎么做 当我从手机上取下标签并再次触摸它时,它已经起作用了,但我想取消这一步骤 舱单: 我只想让NDEF_知道我的意图。但我总是通过调试器获得action.MAIN/category.LAUNCHER意图使用NDEF Android应用程序记录(AAR)获取NFC标记,android,nfc,intentfilter,ndef,android-applicationrecord,Android,Nfc,Intentfilter,Ndef,Android Applicationrecord,我正在处理一个NFC应用程序。为了启动我的应用程序,我使用了一个NDEF标签,里面有一个AAR NDEF记录 这个很好用。但现在我想直接用应用程序读取标签内容。我该怎么做 当我从手机上取下标签并再次触摸它时,它已经起作用了,但我想取消这一步骤 舱单: 我只想让NDEF_知道我的意图。但我总是通过调试器获得action.MAIN/category.LAUNCHER意图 任何帮助都将不胜感激。我的工作基于此:我不知道这是否是正确答案,但我找到了一个解决方案: <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:mimeType="text/plain" />
</intent-filter>
</activity>
</application>
</manifest>
如果希望应用程序由标记启动,并希望接收解析的NDEF消息,则标记应包含以下内容: 要作为NDEF消息的第一条记录进行筛选的NDEF记录,您只能为NFC标记上的第一条NDEF记录创建意图过滤器。给定,在您的情况下,这将是一个文本记录或MIME类型记录,其中包含MIME类型Text/plain。但是,您可能需要考虑使用NFC论坛外部类型记录与您的自定义应用程序特定类型名称,而视此将允许您的应用程序更好地区分与其他应用程序使用的标签。仅当文本记录包含人类可读的非解释文本时,才应使用该文本记录。 如果你想确保只有你的应用程序是用标签启动的,并且如果用户没有安装应用程序,你的应用程序的Play Store页面会自动打开,那么你也应该使用Android应用程序记录AAR。此记录应为NDEF消息中的最后一条记录。请注意,无论NDEF消息中的位置如何,AAR都将得到遵守,但将其用作第一条记录将导致中描述的问题。 一旦准备好包含适当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>
如果您的应用程序没有与标记上NDEF消息的第一条记录相匹配的NDEFèU查找到的意图过滤器,并且您的标记包含Android应用程序记录,则清单中声明的第一个活动将启动,该活动包含Android.intent.action.MAIN和Android.intent.category.LAUNCHER的意图过滤器。因此,由于该活动未声明预期NFC意图,因此将传递不包含NDEF消息/标记句柄的android.intent.action.MAIN。非常感谢您提供了这一信息丰富的答案!现在我可以更清楚地看到关于这个主题的一切:如果接收设备没有安装应用程序,有没有办法让有效负载恢复?我希望在他们安装之后,他们仍能以某种方式达到目的。@hooby3dfx你是说在同一个水龙头上?例如,NFC交互->游戏商店->用户安装应用->用户手动打开应用->接收数据有效载荷?准确地说-这样,如果接收者还没有应用,在他们安装应用后,发送者不需要点击again@hooby3dfx不,Android不支持这个。
<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>