我已经构建了一个应用程序,可以读取我们学校使用的学生证中的某些数据。现在它只读取用户数据,但将来计划是添加支持以读取剩余的信用。
问题是我们使用的卡是Mifare Classic。 Nexus 4和Nexus 10(可能还有更多设备)不支持这些卡,因为它们具有Broadcom NFC控制器。如果我是对的,应用程序不应该崩溃或在这些设备上出现问题,但它只是没有做任何事情。
有没有办法在没有NXP控制器的情况下以某种方式排除这些设备?(基本上类似于MifareClassic类所需的使用功能。)我可以通过Play商店排除Nexus 4和10但是这是几乎没有一个好的解决方案 - 甚至更多因为其他设备可能开始使用Broadcom控制器而且必须手动排除它们。
谢谢! - Ambroos
答案 0 :(得分:4)
您可以按照以下方式在您的应用中查看MIFARE Classic支持:
boolean hasMifare(Context ctx) {
return ctx.getPackageManager().hasSystemFeature("com.nxp.mifare");
}
在安装应用程序之前无法检查此问题。但安装后,您可以警告用户,由于缺少MIFARE Classic支持,应用程序的功能将受到限制。
答案 1 :(得分:0)
显然,这些手机仍然可以读取UID。
可以在Nexus 4和10上使用NFC Mifare Classic标签吗?
YES!和不。虽然Mifare Classic Chips无法写入或 完全由Nexus 4或10读取,他们的UID(唯一标识 代码)可以被检测和读取。所以可以使用Mifare Classic Chips 使用Nexus 4或10以及AutomateIt等应用程序 只需使用标签的UID即可触发保存在其上的事件/设置 设备。 (ReTag和NFC任务启动器也可以使用标签的UID但是 也有能力写入可写标签。)向下到 这是因为如果您有更多标签,则无法写入标签 在手机上使用这些类型的NFC应用程序之一,点击标签 将打开一个框来询问您要使用的应用程序。但如果你 只有一个NFC应用程序用于所有标记事件/设置/等,然后这个 不是问题,可以让你使用Mifare Classic 用于此目的的标签。
了解更多信息 http://andytags.com/nfc-tags-nexus-4--10-compatibility.html#47A4kbkkGceGqe3L.99
我建议您尝试使用渐进式网页增强编程中使用的相同原则,并使用包含在try / catch块内的保护条件来防范每个小函数/假设,而不是基于名称/进行过滤只有品牌。
这样,如果某个制造商创建了错误的标签,或者用户试图错误地同时扫描两个标签,或者用户在扫描完成之前过快地移除了手机,或者其他任何事情发生在未来,您的应用程序将能够更容易地应对这些类型的错误条件。