当前位置: 代码迷 >> Android >> android 判断网络连接的有关问题
  详细解决方案

android 判断网络连接的有关问题

热度:70   发布时间:2016-05-01 11:26:01.0
android 判断网络连接的问题
我的项目中要用到网络连接,可是我用了下面两种方式都无法判断,明明我把网线拔了还是告诉我网络已经连接,权限也给了,请问是哪个地方写错了吗?我就差这个了,有回复马上结贴。谢谢了!
第一种方法

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);

final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyMgr.listen(new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state) {
switch (state) {
case TelephonyManager.DATA_DISCONNECTED:// 网络断开
Toast.makeText(MyGongxf.this, "您暂时没有可用的网络,请检查网络",
Toast.LENGTH_SHORT).show();
break;
case TelephonyManager.DATA_CONNECTING:// 网络正在连接
break;
case TelephonyManager.DATA_CONNECTED:// 网络连接上
Toast.makeText(MyGongxf.this, "网络连接上",
Toast.LENGTH_SHORT).show();
break;
}
}
}, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

}

第二种方法


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
boolean b = isConnectInternet();
if (!b) {
Toast.makeText(MyGongxf.this, "您暂时没有可用的网络,请检查网络",
Toast.LENGTH_SHORT).show();
}
}


public boolean isConnectInternet() {
boolean netSataus = false;
ConnectivityManager conManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = conManager.getActiveNetworkInfo();
if (networkInfo != null) { // 注意,这个判断一定要的哦,要不然会出错
netSataus = networkInfo.isAvailable();

}
return netSataus;
}

------解决方案--------------------
第二种方法你权限对么?
<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>
我试过第二种,在我G7上可以判断。
------解决方案--------------------
用我这个方法
public static  NetworkInfo getAvailableNetWorkInfo(Context context) {
    if(context == null){
   return null;
    }

        ConnectivityManager connectivityManager = (ConnectivityManager)context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null && activeNetInfo.isAvailable()) {
            return activeNetInfo;
        }else{
            return null;
        }
    }

然后去看NetInfo对象的内容
------解决方案--------------------
3楼的代码中不是有了么,改一下。
if (activeNetInfo != null && activeNetInfo.isAvailable()) {
  相关解决方案