2012-03-17 90 views
2

我先告訴你我在做什麼。我在該序列中有三個活動,僅從特定活動中讀取NFC標籤

活動1 >>活動2 >>活動3。現在,當我點擊標籤時,我只想從Activity2讀取NFC標籤。當我在Activity1或Activity3中時,我的應用程序應該無法讀取標籤。我該如何做到這一點,是否有任何啓用/禁用選項?任何財產設置相同?我不想提示用戶爲此設置啓用/禁用NFC設置。

回答

9

作爲一款前臺應用程序,您的應用程序將始終有機會首先對觸摸標籤作出反應。因此,您需要做的是爲您的活動啓用forgraoundDsipatch,並在Activity1和Activity3上僅僅忽略該事件,然後在Activity2上處理所觸摸標籤的信息。否則,如果您的應用程序未採取檢測到的標記事件,則android調度系統將繼續搜索合適的應用程序以進行觸發,當它找到它時,它會在應用程序之上啓動它。

有關前景派遣更多的信息,請看這裏:http://developer.android.com/guide/topics/nfc/advanced-nfc.html#foreground-dispatch

+0

所以我應該爲activity1和activity3設置enableForegroundDispatch()的空參數?如果是這樣,我在onCreate()中做了這個,但由於空指針異常導致強制關閉。我使用enableForegroundDispatch()作爲activity2。 – 2012-03-20 10:15:40

+2

您可以對過濾器和techLists使用null,但對於pendingIntent,您應該指定哪個類將負責標記解析。 (Intent.FLAG_ACTIVITY_SINGLE_TOP),0);這個方法可以用來創建一個新的Intent(this,getClass())。addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0); – 2012-03-20 15:56:13

+0

非常感謝您的回答。它爲我工作。 – 2012-03-29 12:39:30

0

只爲您在Activity2上感興趣的任何NFC意圖設置一個意圖過濾器。有關示例,請參閱Android NFC Demo AndroidManifest.xml

+0

是的,這是我在我的應用做了..我的問題是,第一件事情,我怎麼能阻止我的應用程序讀取標籤,無論是在活動1或Activity3。它應該只在Activity2中讀取標籤。 – 2012-03-17 09:07:59