java - 设置保存的网络设置

标签 java android networking

在我的 Android 应用程序中,我曾经执行以下步骤:

1) 打开 wifi(如果已关闭);
2)连接到特定的wifi(如果找到);
3)在新的wifi网络中做一些事情;
4) 返回第一步之前的网络状态;

如何保存网络状态并重新设置?

最佳答案

将其添加到 list 中 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses- permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses- permission>

检查 wifi 是否打开和关闭 boolean wifiEnabled = wifiManager.isWifiEnabled()

启用和禁用 wifi

WifiManager wifiManager = (WifiManager) 
this.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);
wifiManager.setWifiEnabled(false);

保存新的无线网络

  WifiConfiguration conf = new WifiConfiguration();
    String ssid = "GGP";
    String password = "%5EyS0X-n$2c9";
    conf.SSID = "\"" + ssid + "\"";   // Please note the quotes. String should contain SSID in quotes
    conf.preSharedKey = "\"" + password + "\"";
    String security = "WPA2 Personal";


            //WPA2 Encryption
            if (security.equalsIgnoreCase("WPA2 Personal")) {
                WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                Objects.requireNonNull(wifiManager).setWifiEnabled(true);

                WifiConfiguration conf = new WifiConfiguration();
                conf.SSID = "\"" + ssid + "\"";   // Please note the quotes. String should contain SSID in quotes
                conf.preSharedKey = "\"" + password + "\"";

                conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                conf.status = WifiConfiguration.Status.ENABLED;
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

                // turns on Wifi
                Objects.requireNonNull(wifiManager).setWifiEnabled(true);

                // add wifi configuration to Device.
                int newNetworkId = wifiManager.addNetwork(conf);
                Log.e(TAG, "Wifi Profile added");
                // try to connect to this network
                wifiManager.enableNetwork(newNetworkId, true);
                // saves configuration else after reboot it will be gone
                wifiManager.saveConfiguration();
            }
        }

关于java - 设置保存的网络设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60091700/

相关文章:

java - WebSphere MQ JMS 连接发生错误

c++ - 如何在 C++ 中更改 IP 地址?

go - 组播环回

java - 当您释放移动矩形的键时,如何让矩形停止?

java - 使用ehcache和spring从DB加载数据进行缓存以覆盖现有的缓存机制

java - Java 中的定时器任务

javascript - 如何在Android Hybrid App上加载远程网页(最简单的方法)?

java - 热图 - 生成简单 'HeatPoint' Google Maps Android

android - 在 ipad/平板电脑上调整背景大小

c - Profiling 网络软件/Profiling software with lot of system call waiting