我需要让我的应用等待,直到完全建立wifi连接,然后才继续运行。 我现在有这个代码:
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(!wifiManager.isWifiEnabled())
{
Toast.makeText(this, "Connecting to wifi network", Toast.LENGTH_SHORT).show();
wifiManager.setWifiEnabled(true);
//wait for connection to be establisihed and only then proceed
}
答案 0 :(得分:5)
您可以使用注册的广播接收器:
android.net.conn.CONNECTIVITY_CHANGE
监听状态更改并使用当前状态保留变量
更多信息here
<receiver android:name="your.package.WifiReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
接收者:
public class WifiReceiver extends BroadcastReceiver {
public static boolean connected = false;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager mgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = mgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
connected = networkInfo != null && networkInfo.isConnected();
}
}
public boolean isConnected(){
return connected;
}
答案 1 :(得分:2)
您可以通过连接通知向用户引入屏幕,而不是阻止主线程,让他们知道发生了什么。
在显示包含通知的屏幕时,您可以使用
检查连接<强> ConnectivityManager 强>
请注意,仅检查WIFI连接并不能保证数据服务。可能总是发生网络问题,服务器停机,授权等。
使用示例:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
另外,请勿忘记添加正确的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
您可以在Android开发者网站上找到更多相关信息: Determining and Monitoring the Connectivity Status
祝你好运。