Criando um registro WiFi NDEF usando application / vnd.wfa.wsc no Android

No Android 5.0.0, é possível tocar muito em uma conexão Wi-Fi e gravar essa conexão em uma tag ("Write to NFC tag"). Você pode encontrar a fonte dessa operação aqui:WriteWifiConfigToNfcDialog.java. A linha relevante que usa uma conexão WiFi e cria uma carga útil NDEF parece estar aqui:

String wpsNfcConfigurationToken = mWifiManager.getWpsNfcConfigurationToken(mAccessPoint.networkId);

mWifiManager é uma instância deWifiManager, ContudogetWpsNfcConfigurationToken não faz parte da API. Ao rastrear esse método, podemos encontrar seu commit aqui:Adicionar chamadas para criação de token NFC WSC o que infelizmente não ajuda.Foi aqui que minha investigação terminou. Editar: eu descobri a seguinte pilha de chamadas:

WifiServiceImpl.java chamadasmWifiStateMachine.syncGetWpsNfcConfigurationToken(netId);

WifiStateMachine.java chamadasmWifiNative.getNfcWpsConfigurationToken(netId);

WifiNative.java finalmente tem o método

public String getNfcWpsConfigurationToken(int netId) { return doStringCommand("WPS_NFC_CONFIG_TOKEN WPS " + netId); }

que então chama

String result = doStringCommandNative(mInterfacePrefix + command);

OndedoStringCommandNative faz uma chamada do sistema (não é possível encontrar o código para isso em nenhum lugar).

Agora é onde a investigação termina.

Esperando que alguém possa intervir e me mostrar um método que cria umNdefRecord esse é do tipoapplication/vnd.wfa.wsc dado um SSID, senha, tipo de criptografia / autenticação.

Obviamente, inspecionei os bytes de umapplication/vnd.wfa.wsc O registro criado pelo Android, mas recriar manualmente esse processo com os bytes, parece potencialmente muito pouco confiável e é incrivelmente entediante.

questionAnswers(2)

yourAnswerToTheQuestion