我想创建一个应用程序,在我扫描包含NFC标记的工作批处理时,将时间戳存储到数据库中。这将通过IntentService完成,无需启动活动。在第二次扫描之后,另一个时间戳将通过IntentService存储到数据库中。没有活动必须开始。通知就足够了。用户可以手动启动活动以查看信息。
我读过有很多不同的标签技术。但我喜欢让我的应用程序更具普遍性。所以我不知道我的客户将使用哪种NFC标签。我可以监听所有不同的标签,让用户将标签与某个任务配对。
这是好的,除非手机上有一个NFC应用程序。但我有另一个使用NFC的应用程序。当我扫描标签时,Android会向我显示一个选择对话框,该应用程序可以处理该标记。但我每次扫描标签时都不希望这样。我想使用这两个应用程序,所以我不选择标签的默认值。
所以问题是,如何扫描标签并将其路由到正确的应用程序。所以标签A将由应用A处理,标签B由应用B处理,而不是每次都获得选择框。
我在想什么是最好的选择,或者有人知道如何解决这个问题。
我已经教过几种不同的解决方案:
仅使用可写的NDEF标记并向其添加Android应用程序记录(AAR)。因此它将在扫描后启动正确的应用程序。 (如果前台没有活动的NFC应用程序),这意味着用户必须使用标签技术,并且需要在使用之前进行编写。
让应用程序监听所有NFC标签,如果标签未与任务配对,则再次将其转发给系统,以便其他应用程序可以处理它。 (不知道这是否可行)
编写一个应用程序,用于侦听所有NFC标签,并让用户决定将哪个标签发送到哪个应用程序。因此,当应用程序收到新标记时,它会询问用户哪个应用程序可以处理标记,并将此特定标记的缺省值[通过ID或其他]存储到数据库中。因此,下次它将意图路由到此标记的默认应用程序。 (或者已经有这样的东西?)
希望这个问题有点清楚。如果你愿意,我会尝试更多地澄清一下; - )
我真的很想听听你对此的看法。或许你有一些好的建议?请告诉我。
提前致谢。
答案 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那样具体。