我有一个NFC应用程序,它在清单中设置了所有正确的意图过滤器,仅响应特定类型的NFC技术。
这部分有效,但我不明白如果另一个应用程序具有完全相同类型的过滤器它将会做什么。
我的应用程序会忽略除特定类型之外的所有nfc标记,当扫描我的应用程序从onDestroyed()(或从不运行)弹出到onCreate()并从标记中读取信息时。
现在我的标签中的信息进一步过滤了这一点,我添加了一个我应用所需的特殊字符串。但不幸的是,这需要它在确定它是什么类型的技术之后读取标签。如果它不是我的字符串之一,应用程序会消失 - 但我不明白如果另一个应用程序正在寻找相同类型的技术会发生什么。
我希望发生的是我的应用程序在看到此标记时被加载,但在忽略它之后就消失了。然后,具有完全相同过滤器集的其他应用程序可以加载并使用标签。但我不明白这是如何处理的,我可以预见很多NFC应用程序将进入市场。
洞察力表示赞赏。
答案 0 :(得分:1)
但我不明白如果另一个应用程序正在寻找相同类型的技术会发生什么
据推测,将向用户呈现活动选择器。
我希望发生的是我的应用程序在看到此标记时被加载,但在忽略它之后就消失了。那么具有完全相同过滤器集的其他应用程序可以加载并使用标签。
如果我的活动选择器猜测是正确的,那么唯一可行的方法是:
在安装您的应用并点按相关标签后,用户会选择您的应用作为此类NFC标签的默认处理程序,
您确定它不是您的标记类型后,会弹出您自己的手动活动选择器以执行任何其他相关活动,使用PackageManager
和{{过滤自己从列表中删除1}}等等
但我不明白这是如何处理的,我可以预见很多NFC应用程序将进入市场。
我预计大多数NFC应用将专注于与NDEF兼容的标签,这使得这更加简单。
答案 1 :(得分:0)
活动选择器确实会显示多个应用程序是否可以处理ACTION_TECH_DISCOVERED意图。如果我正确理解您的问题,您实际上无法阻止活动选择器显示多个应用程序是否可以处理标记,除非您使用前台调度,如果可能,如果您的应用程序位于前台,则应用程序可以处理意图。它将取代任何其他可以处理它而不显示活动选择器的应用程序。如果在检查数据并发现它不是您想要的标签之后,我认为您可以潜在地广播意图,以便其他应用程序可以尝试处理它。退房:
http://developer.android.com/guide/topics/nfc/advanced-nfc.html#foreground-dispatch
了解更多信息。