Технология Android NFC

Может ли кто-нибудь объяснить мне, почему поддерживаемые технологии тегов приложения Android объявляются ОБА программно и в файле XML? Во всех примерах, которые я видел до сих пор, это так. Взгляните, например, на это руководство: http://mifareclassicdetectiononandroid.blogspot.com/2011/04/reading-mifare-classic-1k-from-android.html

Код:

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> 

person AOO    schedule 31.08.2011    source источник


Ответы (1)


Они достигают разного. Технологии, которые вы указываете в файле XML, действуют как фильтр намерений для вашей деятельности. То есть, если фильтр совпал, ваша Activity будет запущена. Однако может быть больше действий, соответствующих фильтру, и в этом случае пользователю нужно будет выбрать приложение для обработки тега.

Технологии, которые вы устанавливаете программно с помощью enableForegroundDispatch(), можно использовать для обхода других приложений; если ваша активность находится на переднем плане, вы можете указать службе NFC отправлять все теги NFC, соответствующие фильтру, для вашей активности. Таким образом, даже если в другом действии есть точно такой же фильтр, средство выбора приложений не появится, и Intent перейдет прямо к вашему действию.

В большинстве приложений вам понадобятся и то, и другое — раздражает, если окно выбора «Активность» появляется всякий раз, когда вы сканируете тег в своем приложении. Не забудьте сделать фильтр точным — не фильтруйте то, что вас не интересует.

person Martijn Coenen    schedule 02.09.2011