사용자가 wifi 또는 3g 연결을 사용하지 않으면 내 앱이 다운되는 것을 원하지 않습니다. 내 애플 리케이션에서 이것을 런타임에 어떻게 잡을 수 있습니까?URL 연결을하기 전에 사용자가 3G/Wifi를 사용하는지 감지하는 방법은 무엇입니까?
6
A
답변
7
먼저 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);
}
1
connManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI)는 더 이상 사용되지 않습니다.
아래는 최신 안드로이드 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;
}
[ 안드로이드에서 인터넷 연결을 확인하는 방법을 참조하십시오. ] (http://stackoverflow.com/questions/2326767/how-to-check-internet-conection-in-android). –