如何管理NFC标签到多个应用程序的交付

时间:2013-06-05 21:47:01

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

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

我读过有很多不同的标签技术。但我喜欢让我的应用程序更具普遍性。所以我不知道我的客户将使用哪种NFC标签。我可以监听所有不同的标签,让用户将标签与某个任务配对。

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

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

我在想什么是最好的选择,或者有人知道如何解决这个问题。

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

  1. 仅使用可写的NDEF标记并向其添加Android应用程序记录(AAR)。因此它将在扫描后启动正确的应用程序。 (如果前台没有活动的NFC应用程序),这意味着用户必须使用标签技术,并且需要在使用之前进行编写。

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

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

  4. 希望这个问题有点清楚。如果你愿意,我会尝试更多地澄清一下; - )

    我真的很想听听你对此的看法。或许你有一些好的建议?请告诉我。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

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

然后标签应包含以下网址:

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那样具体。