在 Android 中使用 application/vnd.wfa.wsc 创建 NDEF WiFi 记录
从Android 5.0.0开始,您可以长按WiFi连接并将该连接写入标签(“写入NFC标签”)。您可以在此处找到该操作的源代码:WriteWifiConfigToNfcDialog.java。采用WiFi连接并创建NDEF有效负载的相关行似乎在这里:
String wpsNfcConfigurationToken = mWifiManager.getWpsNfcConfigurationToken(mAccessPoint.networkId);
mWifiManager
是 的一个实例,但不是 API 的一部分。通过跟踪此方法,我们可以在此处找到其提交:添加对NFC WSC令牌创建的调用,不幸的是,这无济于事。这就是我的调查已经结束的地方。编辑:我发现了以下调用堆栈:WifiManager
getWpsNfcConfigurationToken
WifiServiceImpl.java
调用mWifiStateMachine.syncGetWpsNfcConfigurationToken(netId);
WifiStateMachine.java
调用mWifiNative.getNfcWpsConfigurationToken(netId);
WifiNative.java
终于有了方法
public String getNfcWpsConfigurationToken(int netId) {
return doStringCommand("WPS_NFC_CONFIG_TOKEN WPS " + netId);
}
然后调用
String result = doStringCommandNative(mInterfacePrefix + command);
其中进行系统调用(在任何地方都找不到此代码)。doStringCommandNative
这就是现在调查结束的地方。
希望有人可以介入并向我展示一种方法,该方法可以创建给定SSID,密码,加密/身份验证类型的类型。NdefRecord
application/vnd.wfa.wsc
我当然已经检查了Android创建的实际记录的字节,但是手动重新创建此过程似乎非常不可靠,并且非常乏味。application/vnd.wfa.wsc