【问题标题】:Starting application on NFC tag detection启动NFC标签检测应用
【发布时间】:2016-06-05 20:30:54
【问题描述】:

我想注册一个应用程序,以便在检测到 NFC 标签时启动。通过搜索我发现我需要使用

[IntentFilter(new[] { NfcAdapter.ActionTechDiscovered })]

关于主要活动。但是,该应用程序没有启动(也没有提示我选择一个应用程序)。相反,会打开一个通用标签阅读器。

问题出在哪里?

【问题讨论】:

    标签: android-intent xamarin tags nfc intentfilter


    【解决方案1】:

    ActionTechDiscovered 意图过滤器需要一个技术列表,该列表指定应针对哪些标签技术(或它们的组合)开始您的活动。您可以使用以下方式指定技术列表文件:

    [IntentFilter (new[]{NfcAdapter.ActionTechDiscovered})]
    [MetaData (NfcAdapter.ActionTechDiscovered, Resource="@xml/nfctech")]
    

    然后您需要将文件“nfctech.xml”放入文件夹“Resources/xml”中。在这个文件中,您可以定义所有您想要收听的标签技术。例如,要监听任何标签技术,您可以使用:

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

    【讨论】:

    • 太棒了。有没有一种简单的方法可以在 ClassLibrary 项目中定义技术列表?我想避免在解决方案中存在的所有 (3) 个应用程序中定义它。
    • 不知道,我没用过xamarin
    • 啊,还有一个关于应用程序生命周期的问题。当您隐藏应用程序并将其重新启动时,会调用 OnResume,但是,我相信此解决方案会在调用 OnCreate 时关闭并重新启动应用程序,这是否正确?如果是这样,那是期望的行为吗?
    • 根据我使用 Android NFC 的经验,这似乎在版本之间略有不同。从我通常观察到的情况来看,如果您手动启动 Activity,将其带到后台(实际上将整个 Activity 堆栈带到后台),然后通过 NFC Intent 过滤器启动 Activity,则该 Activity 的新实例是已创建(不太确定它是放在应用程序的现有活动堆栈之上,还是以 NFC 服务根活动作为堆栈根的新活动堆栈)。
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多