Java 在进行URL连接之前,如何检测用户是否开启了3G/Wifi?
如果用户没有wifi或3g连接,我不希望我的应用程序崩溃。如何在运行时在我的应用程序中捕获此信息?首先获取对ConnectionManager的引用,然后获取设备的引用。 要使用此服务,您需要访问\网络\状态权限Java 在进行URL连接之前,如何检测用户是否开启了3G/Wifi?,java,android,android-wifi,Java,Android,Android Wifi,如果用户没有wifi或3g连接,我不希望我的应用程序崩溃。如何在运行时在我的应用程序中捕获此信息?首先获取对ConnectionManager的引用,然后获取设备的引用。 要使用此服务,您需要访问\网络\状态权限 ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetw
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mWifi.isConnected() == false && mMobile.isConnected() == false) {
showDialog(DIALOG_NETWORK_UNAVAILABLE);
}
不推荐使用connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
下面是最新Android SDK的改进解决方案
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
boolean is3gEnabled = false;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Network[] networks = connManager.getAllNetworks();
for(Network network: networks)
{
NetworkInfo info = connManager.getNetworkInfo(network);
if(info!=null) {
if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
is3gEnabled = true;
break;
}
}
}
}
else
{
NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(mMobile!=null)
is3gEnabled = true;
}
请参阅[如何在android中检查互联网连接?]()。