Kể từ Android 5.0.0, bạn có thể nhấn vào kết nối WiFi và ghi kết nối đó vào thẻ ("Ghi vào thẻ NFC"). Bạn có thể tìm nguồn cho hoạt động đó tại đây: WriteWifiConfigToNfcDialog.java. Dòng tương ứng mà phải mất một kết nối WiFi và tạo ra một tải trọng NDEF dường như là ở đây:Tạo bản ghi WiFi NDEF bằng ứng dụng/vnd.wfa.wsc trong Android
String wpsNfcConfigurationToken = mWifiManager.getWpsNfcConfigurationToken(mAccessPoint.networkId);
mWifiManager
là một thể hiện của WifiManager
, tuy nhiên getWpsNfcConfigurationToken
không phải là một phần của API. Bằng cách theo dõi phương thức này, chúng tôi có thể tìm thấy cam kết của nó tại đây: Add calls for NFC WSC token creation thật không may là không có trợ giúp. Đây là nơi điều tra của tôi đã hết. Edit: Tôi đã phát hiện ra các cuộc gọi stack sau:
WifiServiceImpl.java
cuộc gọi mWifiStateMachine.syncGetWpsNfcConfigurationToken(netId);
WifiStateMachine.java
cuộc gọi mWifiNative.getNfcWpsConfigurationToken(netId);
WifiNative.java
cuối cùng đã có phương pháp
public String getNfcWpsConfigurationToken(int netId) { return doStringCommand("WPS_NFC_CONFIG_TOKEN WPS " + netId); }
mà sau đó gọi
String result = doStringCommandNative(mInterfacePrefix + command);
trong đó doStringCommandNative
thực hiện cuộc gọi hệ thống (không thể tìm mã cho nơi này).
Hiện tại, nơi điều tra kết thúc.
Hy vọng ai đó có thể tham gia và chỉ cho tôi phương pháp tạo NdefRecord
thuộc loại application/vnd.wfa.wsc
được cấp SSID, Mật khẩu, Mã hóa/Loại xác thực.
Tôi đã kiểm tra các byte của bản ghi application/vnd.wfa.wsc
thực tế được tạo bởi Android nhưng tự tái tạo quy trình này với các byte dường như có khả năng rất không đáng tin cậy và cực kỳ tẻ nhạt.
Cảm ơn câu trả lời và mã của bạn. Nó không gần như là hacky như tôi đã mong đợi. : D – noone