在阅读NDEF标签时,它显示在“NFC服务”而不是应用程序中的内容

时间:2014-05-14 14:46:03

标签: android nfc

我正在尝试使用ADT从Android应用中读取NDEF标记。

代码与this教程中的代码完全相同。

它显示的内容正确但是,它不是打开我的应用程序,而是显示在我的应用程序(相同的用户界面)的克隆中,它被称为带有蓝牙图标的“NFC服务”。

问题是:如果我已经打开了应用程序,那么在阅读之后,它会自动克隆自己以及我在“NFC服务”克隆上完成阅读后所做的一切。

这是多任务菜单显示的内容:

如上所述,“Servizio NFC”在“NFC服务”中翻译

1 个答案:

答案 0 :(得分:3)

我无法评论应用程序在历史记录中显示为“NFC服务”并带有蓝牙图标的问题 - 这显然看起来像是一个错误。

但是,如果您希望自己的应用在已经位于前台时接收NFC事件,我强烈建议您使用foreground dispatchreader mode API(Android 4.4中的阅读器模式是新功能)。

为了使用前台调度,您可以创建一个挂起的意图,如下所示:

PendingIntent pendingIntent = PendingIntent.getActivity(
    this,
    0,
    new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
    0);

然后,在您的活动的onResume()方法中,您将启用前景调度,如下所示:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);

注意,如果您不希望自己的活动接收每个发现的标记,您可以定义意图过滤器或标记技术列表并将其传递给enableForegroundDispatch()方法。

然后,您将收到通过活动的onNewIntent()方法通知您有关已发现标记的意图:

public void onNewIntent(Intent intent) {
    ...
}

请记住,您必须禁用活动的onPause()方法中的前台发送:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.disableForegroundDispatch(this);