【问题标题】:How to manage delivery of NFC tags to multiple apps如何管理向多个应用程序发送 NFC 标签
【发布时间】:2013-06-05 21:47:00
【问题描述】:

当我扫描包含 NFC 标签的工作批次时,我想创建一个将时间戳存储到数据库中的应用程序。这将通过 IntentService 完成,而无需启动活动。在第二次扫描后,另一个时间戳将通过 IntentService 存储到数据库中。无需开始任何活动。一个通知就足够了。用户可以手动启动活动以查看信息。

我读到有很多不同的标签技术。但我喜欢让我的应用程序更通用一点。所以我不知道我的客户会使用哪种 NFC 标签。我可以监听所有不同的标签,并让用户将标签与特定任务配对。

这很好,除非手机上有一个 NFC 应用程序。但我有另一个使用 NFC 的应用程序。当我扫描标签时,Android 会显示一个选择对话框,哪个应用程序可以处理该标签。但我不希望每次扫描标签时都这样。我想同时使用这两个应用程序,所以我没有为标签选择默认值。

所以问题是,我如何扫描标签并将其路由到正确的应用程序。所以标签 A 将由 app A 处理,标签 B 由 app B 处理,而不会每次都获得选择框。

我在想最好的选择应该是什么,或者也许有人有一个很好的想法来解决这个问题。

我教过几种不同的解决方案:

  1. 仅使用可写的 NDEF 标签并向其添加 Android 应用程序记录 (AAR)。所以它会在扫描后启动正确的应用程序。 (如果前台没有激活的 NFC 应用程序)这将意味着用户受限于标签技术,需要在使用前编写它。

  2. 让应用程序侦听所有 NFC 标签,如果标签未与任务配对,则将其再次转发给系统,以便其他应用程序可以处理它。 (不知道能不能这样)

  3. 编写一个监听所有 NFC 标签的应用程序,让用户决定将哪个标签发送到哪个应用程序。因此,当应用程序接收到新标签时,它会询问用户哪个应用程序可以处理该标签,并将此特定标签的默认值 [按 ID 或其他内容] 存储到数据库中。所以下次它会将意图路由到这个标签的默认应用程序。 (或者已经有类似的东西了?)

希望这个问题有点清楚。否则,如果您愿意,我会尝试进一步澄清;-)

我真的很想听听您对此的看法。或者你有什么好的建议?请告诉我。

提前致谢。

【问题讨论】:

  • #2 和 #3 都不可能 AFAIK。

标签: android android-intent nfc ndef android-applicationrecord


【解决方案1】:

我已经成功地为此使用了特定于应用程序的 URL 方案。假设您的 URL 方案是“kuiperstimestamp”。

该标签应包含如下 URL:

kuiperstimestamp://ts/20130506T034536.293

然后为您的服务创建一个包含data 元素的意图过滤器:

<intent-filter>
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="kuiperstimestamp" />
</intent-filter>

由于意图过滤器相当具体,因此您不会看到应用选择对话框(除非另一个应用或服务具有相同的特定意图过滤器,这不太可能)。

这种方法不像使用 AAR 那样特定于 Android。

【讨论】:

  • 感谢您的回答!这是正确的。当我使用你解释的 mime 类型时,我不依赖于 NDEF 标签和 Android。目前这将是一个 Android 应用程序,但考虑到未来是件好事。所以最好让用户使用可以写的标签。然后Android系统很好地处理调度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
相关资源
最近更新 更多