保存网络// 保存网络.public static void saveNetworkByConfig(WifiManager manager, WifiConfiguration config) {if (manager == null) {return;}try {Method save = manager.getClass().getDeclaredMethod("save", WifiConfiguration.class, Class.forName("android.net.wifi.WifiManager$ActionListener"));if (save != null) {save.setAccessible(true);save.invoke(manager, config, null);}} catch (Exception e) {e.printStackTrace();}}
添加网络// 添加网络.public static int addNetwork(WifiManager manager, WifiConfiguration config) {if (manager != null) {manager.addNetwork(config);}}
忘记网络// 忘记网络.public static void forgetNetwork(WifiManager manager, int networkId) {if (manager == null) {return;}try {Method forget = manager.getClass().getDeclaredMethod("forget", int.class, Class.forName("android.net.wifi.WifiManager$ActionListener"));if (forget != null) {forget.setAccessible(true);forget.invoke(manager, networkId, null);}} catch (Exception e) {e.printStackTrace();}}
禁用网络// 禁用网络.public static void disableNetwork(WifiManager manager, int netId) {if (manager == null) {return;}try {Method disable = manager.getClass().getDeclaredMethod("disable", int.class, Class.forName("android.net.wifi.WifiManager$ActionListener"));if (disable != null) {disable.setAccessible(true);disable.invoke(manager, networkId, null);}} catch (Exception e) {e.printStackTrace();}}
断开连接// 断开连接.public static boolean disconnectNetwork(WifiManager manager) {return manager != null && manager.disconnect();}
短暂禁用网络// 禁用短暂网络.public static void disableEphemeralNetwork(WifiManager manager, String SSID) {if (manager == null || TextUtils.isEmpty(SSID))return;try {Method disableEphemeralNetwork = manager.getClass().getDeclaredMethod("disableEphemeralNetwork", String.class);if (disableEphemeralNetwork != null) {disableEphemeralNetwork.setAccessible(true);disableEphemeralNetwork.invoke(manager, SSID);}} catch (Exception e) {e.printStackTrace();}}
监控WIFI变化我们很有可能会有这样的需求:在WIFI断开或者连接的时候,将当前的WIFI数据保存下来
事实上Android中WIFI发生变化的时候,会发送广播,我们只需要监听系统中发送的WIFI变化的广播就可以实现相关的功能了
开启权限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
注册监听广播我们先使用动态注册网络状态的监听广播
PS:注册监听有两种方式 , 无论使用哪种注册方式均需要在AndroidMainest清单文件里面进行注册
- 静态注册
也就是说在AndroidManifest文件中对BroadcastReceiver进行注册,通常还会加上action用来过滤;此注册方式即使退出应用后,仍然能够收到相应的广播
- 动态注册
调用Context中的registerReceiver对广播进行动态注册 , 使用unRegisterReceiver方法对广播进行取消注册的操作;故此注册方式一般都是随着所在的Activity或者应用销毁以后,不会再收到该广播动态注册的代码如下
@Overrideprotected void onStart() {super.onStart();IntentFilter filter = new IntentFilter();filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);registerReceiver(NetworkReceiver.getInstance(),filter);}
然后写具体的NetworkReceiver
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkCapabilities;import android.net.NetworkInfo;import android.net.wifi.WifiManager;import android.os.Build;import android.widget.Toast;import static android.net.wifi.WifiManager.WIFI_STATE_DISABLED;import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;/** * @author panyi * @date 2022/8/23 * 广播接收器 用来监听WIFI的变化 */public class NetworkReceiver extends BroadcastReceiver {private volatile static NetworkReceiver sInstance;public NetworkReceiver(){}public static NetworkReceiver getInstance(){if (sInstance == null) {synchronized (NetworkReceiver.class) {if (sInstance == null) {sInstance = new NetworkReceiver();}}}return sInstance;}// WIFI连接状态改变的监听@Overridepublic void onReceive(Context context, Intent intent) {String action=intent.getAction();if(action==WifiManager.WIFI_STATE_CHANGED_ACTION){switch(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WIFI_STATE_UNKNOWN)){case WIFI_STATE_ENABLED :// WIFI连接Toast.makeText(context, "WiFi enabled", Toast.LENGTH_SHORT).show();break;case WIFI_STATE_DISABLED:// WIFI断开Toast.makeText(context, "WiFi disabled", Toast.LENGTH_SHORT).show();break;}}}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 便携式移动wifi怎么用(携带wifi是骗局不)
- 随身wifi怎么用的要自己买卡么(随身wifi靠谱吗)
- 随身WiFi是什么意思,怎么用的(随身wifi有什么意义)
- 随身WiFi怎么用(随身wifi怎么交费)
- 随身WiFI是怎么用的(随身wifi激活的步骤)
- 移动随身wifi怎么用(移动wifi多少钱一个月)
- 随身无线网怎么用(随身wifi是不是智商税)
- android安卓手机:[4]如何怎么打开.apk文件
- 29 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-终篇
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端