排除使用NFC的非恩智浦Android手机(如Nexus 4/10)

时间:2013-04-02 22:49:38

标签: android nfc google-play mifare

我已经构建了一个应用程序,可以读取我们学校使用的学生证中的某些数据。现在它只读取用户数据,但将来计划是添加支持以读取剩余的信用。

问题是我们使用的卡是Mifare Classic。 Nexus 4和Nexus 10(可能还有更多设备)不支持这些卡,因为它们具有Broadcom NFC控制器。如果我是对的,应用程序不应该崩溃或在这些设备上出现问题,但它只是没有做任何事情。

有没有办法在没有NXP控制器的情况下以某种方式排除这些设备?(基本上类似于MifareClassic类所需的使用功能。)我可以通过Play商店排除Nexus 4和10但是这是几乎没有一个好的解决方案 - 甚至更多因为其他设备可能开始使用Broadcom控制器而且必须手动排除它们。

谢谢! - Ambroos

2 个答案:

答案 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块内的保护条件来防范每个小函数/假设,而不是基于名称/进行过滤只有品牌。

这样,如果某个制造商创建了错误的标签,或者用户试图错误地同时扫描两个标签,或者用户在扫描完成之前过快地移除了手机,或者其他任何事情发生在未来,您的应用程序将能够更容易地应对这些类型的错误条件。

相关问题