【问题标题】:Reading NFC tags only from a particuar activity仅从特定活动中读取 NFC 标签
【发布时间】:2012-03-17 08:38:40
【问题描述】:

我先告诉你我在做什么。我在序列中有三个活动,

活动1>>活动2>>活动3。现在,当我点击标签时,我只想从 Activity2 读取 NFC 标签。当我在 Activity1 或 Activity3 中时,我的应用程序应该无法读取标签。我该怎么做,是否有任何启用/禁用选项?任何属性设置相同?为此,我不想提示用户从设置中启用/禁用 NFC。

【问题讨论】:

    标签: android nfc


    【解决方案1】:

    作为前台应用程序,您的应用程序将始终有机会首先对触摸的标签做出反应。所以你需要做的是为你的活动启用forgraoundDsipatch,在Activity1和Activity3上只是忽略事件,在Activity2上处理被触摸标签的信息。否则,如果您的应用没有接受检测到的标签事件,android调度系统将继续搜索合适的应用程序进行触发,当它找到它时,它将在您的应用程序之上启动它。

    有关前台调度的更多信息,请查看此处:http://developer.android.com/guide/topics/nfc/advanced-nfc.html#foreground-dispatch

    【讨论】:

    • 那么我应该为activity1和activity3的enableForegroundDispatch()设置空参数吗?如果是这样,我在 onCreate() 中做了,但由于空指针异常而强制关闭。我已经将 enableForegroundDispatch() 用于活动 2。
    • 您可以对过滤器和技术列表使用 null,但对于 pendingIntent,您应该指定哪个类负责标签解析。 PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    【解决方案2】:

    仅为您在 Activity2 上感兴趣的 NFC 意图设置一个意图过滤器。以 Android NFC Demo AndroidManifest.xml 为例。

    【讨论】:

    • 是的,这是我在我的应用程序中做的第一件事。我的问题是,如何防止我的应用程序读取标签,无论它是在 Activity1 还是 Activity3 中。它应该只在 Activity2 中读取标签。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多