当我的手机在Wifi上时,我的Android应用程序无法检索数据

时间:2014-07-08 08:43:29

标签: android json wifi

我有一个nexus 5,我开发了一个Android应用程序。

自推出以来,我的手机通过4G或3G连接。但是,当我将其连接到Wi-fi时,应用程序不会检索WEB API JSON的数据。

我在清单中拥有此权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

我尝试使用此代码连接:

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {

        } else {
            Toast.makeText(this, "Une connexion internet est requise", Toast.LENGTH_LONG).show();
        }

如果启用了Wi-Fi和3G:不是Toast 如果启用Wi-Fi并禁用3G:不要Toast 如果禁用了Wi-Fi和3G:Toast

从WEB API JSON开始检索数据,并通过AsyncTask下载。

如果您需要其他信息或代码,请不要犹豫。

谢谢,

托马斯

2 个答案:

答案 0 :(得分:0)

您只检查一个网络连接,获取所有网络连接并检查。 用此代码替换您的网络信息行

**

  

NetworkInfo [] info = cm.getAllNetworkInfo();

**

答案 1 :(得分:0)

用于检查连接使用此代码

public class NetworkUtil {

    public static int TYPE_WIFI = 1;
    public static int TYPE_MOBILE = 2;
    public static int TYPE_NOT_CONNECTED = 0;


    public static int getConnectivityStatus(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (null != activeNetwork) {
            if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
                return TYPE_WIFI;

            if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
                return TYPE_MOBILE;
        } 
        return TYPE_NOT_CONNECTED;
    }

    public static String getConnectivityStatusString(Context context) {
        int conn = NetworkUtil.getConnectivityStatus(context);
        String status = null;
        if (conn == NetworkUtil.TYPE_WIFI) {
            status = "Wifi enabled";
        } else if (conn == NetworkUtil.TYPE_MOBILE) {
            status = "Mobile data enabled";
        } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
            status = "Not connected to Internet";
        }
        return status;
    }
}

并致电

if(NetworkUtil.getConnectivityStatusString(getApplicationContext()).equals("Not connected to Internet"))
            {

                 alert();
        }
        else{

}