我有一个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下载。
如果您需要其他信息或代码,请不要犹豫。
谢谢,
托马斯
答案 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{
}