阅读/处理没有活动的NFC标签

时间:2015-06-16 16:13:24

标签: android android-intent android-activity nfc intentfilter

我必须解决以下问题(如果可能的话): 我正在开发一款Android应用,它可以从互联网上加载与扫描的NFC标签相对应的信息。

只要活动在前台,我就会通过动作ACTION_TAG_DISCOVERED(通过前台调度系统)收到意图,获取意图的NFC ID并继续。

但有人要求直接显示扫描标签的信息,即使活动尚未在前台。

通过将Android应用程序记录(AAR)中的程序包名称写入NFC标记来启动/将应用程序恢复到前台工作,但我没有收到带有标记ID的意图,而不扫描标记a第二次,活动开幕后。

是否有可能通过仅扫描一次NFC标签来启动活动并获取NFC标签的标签ID? 我现在研究的所有资源都说,需要在前台运行的活动来获取意图,包含扫描标签的ID。

修改

尝试更准确地解释我的问题。我得到了什么:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="vnd.android.nfc" />
</intent-filter>

我的活动:

public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
        if (intent.getByteArrayExtra(NfcAdapter.EXTRA_ID) != null) {
            byte[] TagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)
            …   
        }
    }
}

只要活动正在运行,这样就可以了。 现在,活动处于后台或尚未创建。 我扫描NFC标签,活动开始,因为包被写入此NFC标签。启动后,扫描标签的ID应该可用,而不是第二次扫描标签

1 个答案:

答案 0 :(得分:0)

我不确定我明白你遇到了什么问题,但我过去曾用这种方式使用NFC标签。

将此intent-filter放在清单中的Activity上:

    <activity
        android:name=".LibraryActivity"
        android:label="@string/title_activity_library" >

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:scheme="myapp"
                />
        </intent-filter>
    </activity> 

注意:您必须将“myapp”更改为NFC标签使用的任何方案

然后在您的活动中,您应该可以执行以下操作来获取标记中的数据:

public void onNewIntent(Intent intent) {
    Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    //do something with tagFromIntent
}

即使之前没有运行,也会启动您的活动。