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
的代码
这是我的代码的一部分:
@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
的代码