com.android.nfc_extras的文档?

时间:2012-08-31 14:17:10

标签: android nfc

显然,如果您拥有root手机,则可以使用com.android.nfc_extras来访问卡片模拟功能(Secure element Access Control on ICS 4.0.4)。

我知道这是一个非官方的API,但有没有任何文档(官方或非官方)?或者另一方面,卡片仿真比我意识到的要复杂得多吗?

2 个答案:

答案 0 :(得分:5)

请记住,访问安全元素和进行卡片模拟实际上是两件不同的事情。安全元件基本上是封闭的;你无法修改它。使用com.android.nfc_extras,您可以通过安全元素打开或关闭卡片仿真。就是这样。

您可以从应用程序向安全元素发送APDU,例如与IsoDep标记进行通信(在NFC堆栈的较低级别部分中都使用相同的代码路径)。有关如何执行此操作的详细说明,请参阅http://nelenkov.blogspot.nl/2012/08/accessing-embedded-secure-element-in.html

答案 1 :(得分:2)

没有文件。如果您想深入了解这个API,我建议您直接查看源代码。它并不多,只有两个文件实现和定义API。你可以在这里获得一份副本:

http://source-android.frandroid.com/frameworks/base/nfc-extras/java/com/android/nfc_extras/

在API中你会发现像ExecutionEnvironment,Routes等概念。不要让这些概念让你感到困惑。最后,您可以使用NfcExtras接口执行以下操作:

  • 通过设置使用ROUTE_ON_WHEN_SCREEN_ON创建的路线来开启卡片仿真。

  • 通过设置“关闭”路线关闭卡片仿真。

  • 使用嵌入式安全元素交换数据。

就是这样!所有其余的只是API糖,使事物看起来比实际上更大。

一些额外的警告:

  • 如果要调用函数,则需要在nfcee_access.xml文件中将应用程序列入白名单,该文件位于/ etc中。如果您没有自行列出白名单,则会出现访问冲突异常。

  • 您无法区分手机中存在的嵌入式安全元件或支持NFC的UICC。

  • 无法与手机中支持NFC的UICC对话。您只能与嵌入式安全元件(也就是具有NXP芯片组的手机的SmartMX芯片)进行通信。只有通过ISO7816接口的RID接口才能与UICC本身进行通信,这是 - 如果可能的话 - 专有。

  • 最后但并非最不重要:无法保证NfcExtras接口可以执行任何操作。该界面由谷歌钱包使用,但移动支付市场是分段的,每个人都自己煮汤。 我知道至少有一家大型移动支付提供商完全忽略了NfcExtras界面,禁用了它并使用他自己的隐藏机制打开和关闭。