2011-08-31 106 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将直接进入您的活动。

在大多数应用程序中,您会同时需要这两个选项 - 如果您在应用程序中扫描标签时活动选择器就会出现,这很烦人。请务必使过滤器准确 - 但不要过滤你不感兴趣的东西。