我已经建立了一个应用程序,从学生的身份证我们学校使用读出某些数据。 现在它只能读取用户数据,但在未来的计划是增加支持读取剩余的信用。
问题是,我们使用的卡是MIFARE经典。 的Nexus 4和Nexus 10(以及可能更多的设备)并不因为它们具有博通NFC控制器支持这些卡。 如果我是正确的应用程序不应该崩溃或在这些设备上给予的问题,但它只是没有做任何事情。
有没有办法以某种方式不排除NXP控制这些设备? (基本上是这样的MifareClassic类所需用途的特征)。我可以排除透过Play商店中的Nexus 4和10,但是这是几乎没有一个很好的解决方案 - 甚至更多,因为其他设备可能会开始使用博通的控制器,他们会都必须是手动排除。
谢谢! - Ambroos
你可以在你的应用程序的MIFARE经典支持检查如下:
boolean hasMifare(Context ctx) {
return ctx.getPackageManager().hasSystemFeature("com.nxp.mifare");
}
有没有办法安装应用程序之前检查这一点。 但在安装后,你可以提醒你的应用程序的功能将受到限制,因为缺乏的MIFARE经典的支持,用户。
显然,UID仍然可以通过这些手机阅读。
可NFC MIFARE经典标签将与Nexus 4和10都使用?
是! 和不。 虽然MIFARE经典芯片不能被写入或完全读取由Nexus的4或10,它们的UID(唯一识别码)可以被检测和读出。 所以MIFARE经典芯片可以与Nexus 4或10与一个应用程序如AutomateIt简单的使用标签的UID来触发保存在设备上的事件/设置一起使用。 (重新标记和NFC任务启动器也可以只使用一个标签的UID,但也有写可写标签的能力。)向下的一面这是因为标签不能写,如果你有这些类型的不止一个您手机上的NFC应用程序,窃听标签将弹出一个对话框问你要使用的应用程序。 但是,如果你只使用一个NFC应用程序为所有的标记事件/设置/等等,那么这是不是一个问题,将允许您使用的Mifare经典标签用于这一目的。
更多详情http://andytags.com/nfc-tags-nexus-4--10-compatibility.html#47A4kbkkGceGqe3L.99
我建议您尝试使用在逐步增强网络编程中使用相同的原则,并使用包裹try / catch块内,以防止每个小功能/假设的,而不是基于一个名字/只品牌过滤警戒条件。
这样,如果一些制造商创建错误的标签,或者如果用户试图在错误的同时扫描两个标签,或者如果用户太快删除电话前扫描完成后,或其他任何在未来发生,您的应用将能够与这些类型的错误条件更容易地应付。