Android NFC:在检测任何类型的NFC时的意图

时间:2015-03-12 09:51:04

标签: android nfc

我正在试图检测NFC标签的加入时间。此代码有效,但它不适用于Mifare Classic标记。 Mi智能手机与此技术不兼容,但我安装了一个应用程序(NFC工具),能够检测Mifare Classic标签何时接近。它无法读取存储的数据,但我并不需要它。我只需要检测一下这个事件。这个第三方应用程序能够做到这一点,所以我确信这是可能的,但我不知道如何。

这是我的代码:

private void prepareIntent() {
        mAdapter = NfcAdapter.getDefaultAdapter(this);
        if (hasNfcCapabilities()) {
            mPendingIntent = PendingIntent.getActivity(
                    this, 0, new Intent(this, ((Object) this).getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
            IntentFilter techDiscovered = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
            IntentFilter tagDiscovered = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
            IntentFilter ndefDiscovered = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
            try {
                techDiscovered.addDataType("*/*");
                tagDiscovered.addDataType("*/*");
                ndefDiscovered.addDataType("*/*");
            } catch (IntentFilter.MalformedMimeTypeException e) {
                e.printStackTrace();
            }
            mFilters = new IntentFilter[]{techDiscovered, tagDiscovered, ndefDiscovered};
            mTechLists = new String[][]{};
        }
    }

我有什么方法可以检测Mifare Classic标签?

感谢。

1 个答案:

答案 0 :(得分:0)

解决!文档说:

enter link description here

  

过滤IntentFilters以覆盖调度,或者null以始终调度

因此,在null的方法enableForegroundDispatch中的过滤器参数中传递NfcAdapter,它将检测所有类型的NFC标记。

mAdapter.enableForegroundDispatch(this, mPendingIntent, null, mTechLists);