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

Android NFC: Intent when detect any type of 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 标签?

谢谢。

已解决!文档说:

enter link description here

filters the IntentFilters to override dispatching for, or null to always dispatch

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

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