2013-06-05 31 views
0

我想创建一个应用程序,当我扫描包含NFC标签的工作批次时,会将时间戳存储到数据库中。这将通过一个IntentService完成,而不需要开始一个活动。在第二次扫描之后,另一个时间戳将通过IntentService存储到数据库中。没有活动必须开始。通知就足够了。该活动可以由用户手动启动以查看信息。如何管理向多个应用程序传送NFC标签

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

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

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

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

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

  1. 只使用可写标签NDEF并添加一个Android应用程序记录(AAR)到它。因此它会在扫描后启动正确的应用程序。 (如果在前台没有活动的NFC应用程序),这将意味着用户被限制为标签技术,并且需要在使用之前将其写入。

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

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

希望这个问题有点清楚。否则我会尽量澄清它,如果你喜欢;-)

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

在此先感谢。

+0

#2和#3都不可能AFAIK。 – CommonsWare

回答

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特有。

+0

谢谢你的回答! 没错。当我使用像你解释的MIME类型时,我不依赖于NDEF标签和Android。目前这将是一个Android应用程序,但它对未来的思考很有好处。 所以最好让用户使用可以写入的标签。然后Android系统很好地处理调度。 – kuipers

相关问题