【发布时间】:2017-08-10 19:13:58
【问题描述】:
对于我的应用,在与服务器联系之前,我需要确保用户已连接到 wifi。我找到了两种方法可以做到这一点,但我不确定一个是否足够。
首先我要添加这个:
WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext()
.getSystemService(WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
buildAlertNoWifi();
showProgressDialog(false, "");
return;
}
然后我正在这样做:
ConnectivityManager cm = (ConnectivityManager) getActivity()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
// connected to the mobile provider's data plan
Toast.makeText(getContext(), "Make sure you connect to wifi.", Toast.LENGTH_LONG).show();
return;
}
} else {
Toast.makeText(getContext(), "Make sure you connect to wifi.", Toast.LENGTH_LONG).show();
return;
}
所以我想知道wifiManager.isWifiEnabled() 是否返回设备是已连接 到 wifi 还是刚刚打开了 wifi。如果是这样,单独使用它就足够了吗?
【问题讨论】:
-
下面的很多答案都建议使用现在已弃用(从 API 29 开始)的方法,例如
getActiveNetworkInfo(),Android 现在建议一些处理网络信息的新方法,请参阅我的答案 @987654322 @.
标签: android wifi android-wifi wifimanager android-connectivitymanager