wifi的状态返回假,即使它是连接
我在应用程序的调用onStart查询手机的wifi状态,但即使连接它返回false,我已经尝试过很多事情,但没有奏效wifi的状态返回假,即使它是连接
这里就是我做
@Override protected void onStart() {
super.onStart();
onStartStates();
}
onStartStates()方法
private void onStartStates(){
ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo net = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
Log.d(TAG, "Wifi State 1"+net.isConnected());
Log.d(TAG, "Wifi State 2"+getCurrentSsid(esActivity.this));
}
getCurrentSsid()方法
public static String getCurrentSsid(Context context) {
WifiInfo wifiInfo = getCurrentWifiInfo(context);
if (wifiInfo != null) {
return wifiInfo.getSSID();
}
return null;
}
public static WifiInfo getCurrentWifiInfo(Context context) {
final ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo != null && networkInfo.isConnected()) {
final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
return wifiManager.getConnectionInfo();
}
return null;
}
两个方法返回false,即使我切换WiFi打开刚开始我的应用程序...任何想法
试试下面的方法来检测设备是否有网络连接。获取当前活动的网络可能会对您有所帮助。
/**
* Check for <code>TYPE_WIFI</code> and <code>TYPE_MOBILE</code> connection
* using <code>isConnected()</code> Checks for generic Exceptions and writes
* them to LogCat as <code>CheckConnectivity Exception</code>. Make sure
* AndroidManifest.xml has appropriate permissions.
*
* @param con
* Application context
* @return Boolean
*/
public static boolean hasConnectivity(Context con)
{
ConnectivityManager connectivityManager;
NetworkInfo wifiInfo;
NetworkInfo mobileInfo;
try
{
connectivityManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
boolean serviceAvailable = (netInfo!=null && netInfo.isConnected())? true:false;
wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifiInfo.isConnected() || mobileInfo.isConnected() || serviceAvailable)
{
Logger.info(TAG + " : " + true);
return true;
}
}
catch (Exception e)
{
Logger.info(TAG + ": hasConnectivity: Exception: " + e.getMessage());
}
Logger.error(TAG + " : " + false);
return false;
}
它与我的代码有什么不同? – user3290805 2014-11-24 20:19:07
它几乎相同,但我也检查当前活动的网络 NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); 给它尝试并回到我身边。 – 2014-11-24 20:22:50
它返回false ...仍然 – user3290805 2014-11-25 09:38:41
尝试将您的代码从onStart()移动到onCreateView()。很多时候,用于检查状态和类似情况的metod在早期的活动生命周期中不可用。 – SeahawksRdaBest 2014-11-24 17:07:35
你是否在清单中添加了适当的执行? – KOTIOS 2014-11-24 17:10:04
是的,我有这方面的所有权限 – user3290805 2014-11-24 17:54:46