0

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

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

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

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

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

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

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

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

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

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

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

提前致谢。

4

1 回答 1

0

我已经成功地为此使用了特定于应用程序的 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。

于 2013-06-06T10:58:26.803 回答