【发布时间】:2010-09-09 21:50:05
【问题描述】:
如果用户没有 wifi 或 3g 连接,我不希望我的应用程序崩溃。如何在我的应用程序运行时捕捉到这一点?
【问题讨论】:
-
查看[如何在android中检查互联网连接? ](stackoverflow.com/questions/2326767/…)。
标签: java android android-wifi
如果用户没有 wifi 或 3g 连接,我不希望我的应用程序崩溃。如何在我的应用程序运行时捕捉到这一点?
【问题讨论】:
标签: java android android-wifi
首先获取对 ConnectivityManager 的引用,然后是设备的 check the Wifi and 3G status。 您需要 ACCESS_NETWORK_STATE 权限才能使用此服务。
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;
}
【讨论】: