如何以编程方式在奥利奥中创建wifi热点?

shy*_*002 1 passwords android ssid wifi wifimanager

您好,给定的链接问题只是显示如何打开/关闭 wifi 热点,但我想添加使用 SSID 和密码创建 wifi 热点。 我编写了在 android 中创建 wifihotspot 的代码(在 NONE 和 WPA2 PSK 中),它在 android 7 之前工作正常,但在 oreo 中它返回我错误的值。我的代码的摘要是-

private WifiManager wifiManager;
private Method method;
private WifiConfiguration config;
config.SSID = ssid;
config.status = WifiConfiguration.Status.ENABLED;
method = wifiManager.getClass().getMethod("setWifiApEnabled",                                           
WifiConfiguration.class, Boolean.TYPE);
boolean status = (Boolean)  method.invoke(wifiManager, config, true);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何为 android oreo 创建 NONE 和 WPA2 PSK 格式的 wifihotspot?是否可以?

Raz*_*aza 5

Oreo 不支持以编程方式创建无密码热点。它总是使用随机生成的唯一 ssid 和密钥创建热点。

 WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
 WifiManager.LocalOnlyHotspotReservation mReservation;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        assert manager != null;
        manager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback() {

            @SuppressLint("SetTextI18n")
            @Override
            public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
                super.onStarted(reservation);
                Timber.d("Wifi Hotspot is on now , reservation is : %s", reservation.toString());
                mReservation = reservation;
                 key = mReservation.getWifiConfiguration().preSharedKey;
                 ussid = mReservation.getWifiConfiguration().SSID;


            }

            @Override
            public void onStopped() {
                super.onStopped();
                Timber.d("onStopped: ");
            }

            @Override
            public void onFailed(int reason) {
                super.onFailed(reason);
                Timber.d("onFailed: ");
            }
        }, new Handler());
    }
Run Code Online (Sandbox Code Playgroud)