2017-02-26 63 views
1

根據AOSP source codeNfcAdapter定義了具有"android.nfc.action.TAG_LOST"的字符串值的常量ACTION_TAG_LEFT_FIELD如何接收android.nfc.action.TAG_LOST意圖檢測標記刪除?

在文件狀態的Javadoc:

廣播爲僅處理ACTION_TAG_DISCOVERED

責備表明,這一聲明得到了最初的NFC實施過程中添加2010,因此,任何的NFC的活動有能力的Android版本應該有它(除了專門刪除它的構建)。

我有一個活動,聽任何ACTION_NDEF_DISCOVERED,ACTION_TECH_DISCOVEREDACTION_TAG_DISCOVERED。我試圖通過在清單中聲明它並通過註冊BroadcastReceiver來獲取它以傾聽ACTION_TAG_LEFT_FIELD,但該活動從未收到該意圖。我試過NDEF格式的標籤和一個通用標籤(其中一個觸發器ACTION_NDEF_DISCOVERED,其他觸發器ACTION_TAG_DISCOVERED),以及兩個運行不同版本Android的不同設備。

如果很重要:應用程序從不會執行明確的connect()操作來從標記中讀取,但會從Intent附加項中獲取所有標記數據。

有沒有人成功收到android.nfc.action.TAG_LOST廣播?我究竟做錯了什麼?

回答

2

該字段在NfcAdapter API中確實宣稱:

/** 
* Broadcast to only the activity that handles ACTION_TAG_DISCOVERED 
* @hide 
*/ 
public static final String ACTION_TAG_LEFT_FIELD = "android.nfc.action.TAG_LOST"; 

但是,請注意,其宣稱爲隱藏(@hide),所以它不是任何公共API的一部分,因此,沒有記錄使用這種方式。

事實上,儘管這已在NfcAdapter API類中定義,但它並未被Android使用。 Android NFC服務甚至不會嘗試發送這個意圖。因此,您的應用無法接收它。