【问题标题】:WPS connection programmatically in Android?在Android中以编程方式连接WPS?
【发布时间】:2016-11-25 01:29:23
【问题描述】:

如何以编程方式尝试使用 WPS 协议连接到 wifi? 我找到了如何连接 WEP、WPA 和打开 wifi,但不是 WPS...

谢谢大家!

在回答 Greg432 后编辑

我尝试过这段代码,但它不起作用,解决方案?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                wpsInfo = new WpsInfo();
                wpsInfo.BSSID = wifiList.get(0).BSSID;
                wpsInfo.pin = "11883737";
                wpsInfo.setup = 0;


                wpsCallback = new WifiManager.WpsCallback() {
                    @Override
                    public void onStarted(String pin) {
                        Toast.makeText(getApplicationContext(), "Started wps connection.", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSucceeded() {
                        Toast.makeText(getApplicationContext(), "Connected!", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onFailed(int reason) {
                        String errorMessage;
                        switch (reason) {
                            case WifiManager.WPS_OVERLAP_ERROR:
                                errorMessage = "WPS_OVERLAP_ERROR";
                                break;
                            case WifiManager.WPS_WEP_PROHIBITED:
                                errorMessage = "WPS_WEP_PROHIBITED";
                                break;
                            case WifiManager.WPS_TKIP_ONLY_PROHIBITED:
                                errorMessage = "WPS_WEP_PROHIBITED";
                                break;
                            /*case WifiManager.IN_PROGRESS:
                                mWifiManager.cancelWps(null);
                                startWps();
                                return;*/
                            case WifiManager.WPS_TIMED_OUT:
                                errorMessage = "WPS_TIMED_OUT";
                                //startWps();
                                return;
                            default:
                                errorMessage = "Generic error.";
                                break;
                        }

                        Toast.makeText(getApplicationContext(), errorMessage, Toast.LENGTH_SHORT).show();
                    }
                };

                wifiManager.startWps(wpsInfo, wpsCallback);
}

【问题讨论】:

  • 你找到解决办法了吗?

标签: android wifi android-wifi wifimanager wps


【解决方案1】:

使用 WifiManager 的 startWps() 方法:

mWifiManager.startWps(wpsConfig, mWpsCallback);

你应该传递一个配置和一个回调。

例子

https://android.googlesource.com/platform/packages/apps/TvSettings/+/lollipop-wear-release/Settings/src/com/android/tv/settings/connectivity/WpsConnectionActivity.java

【讨论】:

  • 嗨!谢谢你的回答,我试着写了一个代码,但不能正常工作……你能看吗?
【解决方案2】:

2021 年更新

从 API 28 及更高版本开始,以编程方式连接 WPS 已被弃用和删除。

已无法与mWifiManager.startWps(wpsConfig, mWpsCallback); 联系,也别无选择。

来源:https://developer.android.com/reference/android/net/wifi/WifiManager#startWps(android.net.wifi.WpsInfo,%20android.net.wifi.WifiManager.WpsCallback)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2011-11-13
    • 2015-03-14
    • 2012-06-05
    相关资源
    最近更新 更多