URL接続を作成する前に、ユーザーが3G/WiFiをオンにしているかどうかを検出する方法は?
-
02-10-2019 - |
質問
ユーザーがWiFiまたは3G接続を持っていない場合、アプリをクラッシュさせたくありません。アプリで実行時にこれをキャッチするにはどうすればよいですか?
解決
まず、ConnectivityManagerへの参照を取得します WiFiおよび3Gステータスを確認してください デバイスの。このサービスを使用するには、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;
}
所属していません StackOverflow