【问题标题】:How to configure a wifi auto connect true or false.If true it should auto connect如何配置 wifi 自动连接 true 或 false。如果为 true,它应该自动连接
【发布时间】:2018-01-02 11:12:52
【问题描述】:

我正在创建一个应用程序,我在其中以编程方式扫描 wifi、连接到选定的 wifi 以及其他与 wifi 相关的任务。现在我想实现自动连接功能。
要求:如果自动连接开启,wifi信息被缓存,允许下次自动连接网络; 如果多个网络设置为自动连接,那么它应该连接到最近连接的一个。任何建议或指导将不胜感激。

【问题讨论】:

标签: android wifi android-wifi android-networking


【解决方案1】:

在启用 wifi 时将应用程序连接到 wifi。执行自动连接步骤:

注册BroadcastReceiver().

 <receiver
            android:name=".MyReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
   </receiver>

在 Menifest 中添加权限。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

创建MyReceiver

public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                Log.d("MyReceiver", "MyReceiver invoked...");

                WifiManager wifiManager = (WifiManager) 
                context.getSystemService(context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                String ssid = wifiInfo.getSSID();

                boolean noConnectivity = intent.getBooleanExtra(
                        ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
                if (!noConnectivity) {
                    Log.d("MyReceiver", "connected");
                    WifiConfiguration wifiConfig = new WifiConfiguration();
                    wifiConfig.SSID = String.format("\"%s\"", ssid );
                    wifiConfig.preSharedKey = String.format("\"%s\"", networkKey);
                    WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
                    int netId = wifiManager.addNetwork(wifiConfig);
                    wifiManager.disconnect();
                    wifiManager.enableNetwork(netId, true);
                    wifiManager.reconnect();
                }
                else{
                    Log.d("NetworkCheckReceiver", "disconnected");
                }
            }
        }
 }

因此,每当应用程序处于前台并且启用 wifi 时自动连接最近的 wifi。

【讨论】:

  • wifiConfig.SSID = String.format("\"%s\"", networkSSID); wifiConfig.preSharedKey = String.format("\"%s\"", networkKey);我不知道它是如何获取 SSID 和密码的。
  • 我可以将配置为自动连接的 wifi 存储在某处,然后我可以使用该 SSID 和密码。我在这里很困惑。
  • 这是不可能的,因为这将是一个重大的安全风险。如果手机已root,您也许可以,但我不知道,我想,并希望,即使您可以到达手机上存储它的位置,它也会被加密。
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多