使用Connectivity Manager Class,我们可以访问wifi或Internet网络:
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
其中0和1分别指移动和wifi连接
如果我的Android设备连接到两者,我们可以在任何网络之间切换,还是可以禁用任何网络?喜欢使用功能:
connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);
Run Code Online (Sandbox Code Playgroud) 我的应用程序用于HttpURLConnection连接到我的REST服务.我记录错误,并注意到偶尔会发生的是用户获得WiFi连接,但它有代理.
例如,那些机场wifi会重定向您支付页面,然后让您使用互联网.我的代码不遵循重定向.
我真正想要的是忽略WiFi的存在并强制通过3G/4G/E进行通信.我怎么能在Android上这样做?
再次陷入同样的问题。
我发现我们可以像这样设置静态系统设置:
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "1"); // to define it use static ip's
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_IP,"192.168.1.15");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_NETMASK,"255.255.255.0");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1,"192.168.1.1");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY,"192.168.1.1");
Run Code Online (Sandbox Code Playgroud)
但是没有成功!
我不知道何时设置这些设置?
我应该在创建wifi配置之前还是在保存wifi配置之后甚至在激活它之前或之后执行此操作?
但是,我已经尝试了所有可能的情况,当我检查Android WiFi设置时,发现它仍在DHCP上。
之前的问题(即如何在Android 3.x或4.x上以编程方式配置静态IP地址,网络掩码,网关)完全毁了我的android设备,现在它无法再打开其WiFi。
我还在HTC手机上尝试了静态IP,但没有成功,始终处于DHCP模式!
我需要调用“ 重新连接 ”命令吗?如果是,那用哪种方式?
As per Android Q new features, there is a inline settings panel showing key connectivity settings that lets the user modify different connectivity settings such as airplane mode, wifi, volume, NFC and internet connectivity.
How can I open that settings panel programmatically from my app? like in screenshot below.