2011-08-31 133 views
0

任何人都可以向我解釋爲什麼Android應用程序支持的標籤技術是以編程方式和XML文件聲明的?在我看到的所有例子中,就是這樣。在本教程中,例如看看:http://mifareclassicdetectiononandroid.blogspot.com/2011/04/reading-mifare-classic-1k-from-android.htmlAndroid NFC技術

代碼:

mTechLists = new String[][] { new String[] { MifareClassic.class.getName() } }; 

XML文件:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <tech-list> 
     <tech>android.nfc.tech.NfcA</tech> 
     <tech>android.nfc.tech.MifareClassic</tech> 
    </tech-list> 
</resources> 

回答

1

他們實現不同的東西。您在XML文件中指定的技術充當您的活動的意圖過濾器。也就是說,如果過濾器匹配,您的活動將啓動。但是,可能有更多的活動與過濾器匹配,並且在這種情況下,用戶需要選擇一個應用程序來處理標籤。

您使用enableForegroundDispatch()以編程方式設置的技術可用於繞過其他應用程序;如果您的活動處於前臺,您可以通知NFC服務將與過濾器匹配的所有NFC標籤發送到您的活動。因此,即使其他Activity具有完全相同的過濾器,應用程序選擇器也不會出現,而Intent將直接進入您的活動。

在大多數應用程序中,您會同時需要這兩個選項 - 如果您在應用程序中掃描標籤時活動選擇器就會出現,這很煩人。請務必使過濾器準確 - 但不要過濾你不感興趣的東西。