我正在编写一个Android应用程序来使用Nexus S读取和写入标记。 我有两个不同的活动,一个用于读取,另一个用于写入,两个都在各自的上下文中被调用。我的清单看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="bri.nfc.NfcTagReaderV1"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.NFC"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".NFCTagReaderV1Activity"
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="com.example.android.nfc.TagViewer">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="text/*" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:scheme="http" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="bri.nfc.writetag.WritetagActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="text/*" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:scheme="http" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
在我执行时,活动是随机调用的。有一次调用tagviewer活动并调用另一个时间写活动。
我要求我的应用程序在读取时调用“tagviewer活动”,在写入时调用“writetag活动”。
答案 0 :(得分:0)
您无需为“writetag活动”声明一个意图过滤器。相反,您需要使用前台调度系统。
以下链接将您转到Android Dev页面,该页面描述了如何实现前台调度系统。实施非常直接。
http://developer.android.com/guide/topics/nfc/index.html#foreground-dispatch
当触发newIntent-event时,您就可以在NFC标签上写入数据。要在NFC标签上写入数据,请点击此链接http://developer.android.com/guide/topics/nfc/index.html#write
这就是我在我的应用程序中执行此操作的方式,它运行良好。
答案 1 :(得分:0)
当您的活动恢复时,您应该在ActivityClass的OnResume方法()中使用前台调度。阅读标记后,请按照此链接Reading NFC Tag With ForeGround Dispatch。在编写时,您应该再次为WritingActivity设置前台调度。别忘了在Activity的OnPause方法中停止Foreground Dispatch。因此,一次只有1个活动会注册前台调度