其他分享
首页 > 其他分享> > Android,检查互联网连接

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