Android,检查互联网连接
作者:互联网
我进行了很好的搜索,并尝试了各种针对此问题的答案,但是在我看来,这些答案都不起作用.我正在寻找一个可靠的解决方案,因此,事不宜迟.
我有一个不寻常的情况,我的应用程序需要连接到没有互联网连接才能执行某些任务的wifi网络(本地网络),一旦完成,它就需要断开连接并重新连接到其他网络(移动网络,或具有Internet连接的wifi热点,这样我就可以进行通讯了.
我的问题是我的通讯队列需要确保在即将开始进行通讯时(实际上是在连接更改时触发的),它实际上具有到Internet的路由.
我已经尝试了对ConnectivityManager的各种调用,例如;
isConnected();
isAvailable();
但是即使连接到我的不支持Internet的网络,它们也将返回true.
我需要一种方法来确保当连接到我的不支持Internet的网络(或任何其他不支持Internet的网络(例如BT Openzone),例如未注册并登录)时,我会被告知没有路由上网,然后当我有路线时,可以返回true.
我考虑过的一种可能是ping,但如果可能的话,我希望稍微整洁一些.
我尝试了requestRouteToHost(),但是没有达到我的期望,实际上试图更改连接性,这不是我想要的.
谢谢
解决方法:
从Check INTENT internet connection
<receiver android:name=".YOURRECEIVER">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public class NetworkStateReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.d("app","Network connectivity change");
if(intent.getExtras()!=null) {
NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
Log.i("app","Network "+ni.getTypeName()+" connected");
}
}
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
XLog.d("app","There's no network connectivity");
}
}
}
标签:connectivity,android-wifi,android 来源: https://codeday.me/bug/20191201/2079252.html