我正在试图检测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标签?
感谢。
答案 0 :(得分:0)
解决!文档说:
过滤IntentFilters以覆盖调度,或者null以始终调度
因此,在null
的方法enableForegroundDispatch
中的过滤器参数中传递NfcAdapter
,它将检测所有类型的NFC标记。
mAdapter.enableForegroundDispatch(this, mPendingIntent, null, mTechLists);