MifareClassic 连接失败 NFC

MifareClassic connection fails NFC

这是我的代码的一部分:

@Override
    protected void onResume() {
        super.onResume();
        adaptadorNFC = NfcAdapter.getDefaultAdapter(this);
        final Intent intent = new Intent(this.getApplicationContext(), this.getClass());
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        final PendingIntent pendingIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, intent, 0);
        adaptadorNFC.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);    
        read(this.getIntent());
    }

@Override
    protected void onPause() {
        adaptadorNFC.disableForegroundDispatch(this);
        super.onPause();
    }


private void read(Intent intent)
    {
        Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        MifareClassic mifare = MifareClassic.get(tagFromIntent);
        try {
            mifare.connect();
            System.out.println("success connection");        
        } catch (IOException e) {
            System.out.println("Error");
        } finally {
            if (mifare != null) {
                try {
                    mifare.close();
                }
                catch (IOException e) {
                    System.out.println("Error");
                }
            }
        }

}

但是当我到达 mifare.connect() 时它落入了 IOException。异常消息为空,所以我没有更多信息。我非常感谢你的帮助。 其他一切都很好。只有在我要连接时才会失败。我使用的标签是有效的 Mifare Classic 1K。我可以读取它的 ID,但无法连接。

并非所有 Android 设备都支持 Mifare Classic 卡 - 这不是完全标准的卡,因此一些芯片制造商不支持它。

在您的 activity 中,使用

进行检查
    private boolean hasMifareClassic() {
            return getPackageManager().hasSystemFeature("com.nxp.mifare");
    }

查看此 abstract activity 以获得完整示例。

代码没问题。我的 cel 读取 mifare 经典。问题是我正在发送许多 Toast(停止线程直到它完成显示消息),并且当我传递 mifare 时,我在它到达连接方法之前将它从单元格中取出。感谢@ThomasRS 提供检测设备是否支持 Mifare Classic

的代码