Java 获取WiFi状态并使用广播接收器对其进行操作
我正在我的应用程序中使用broad cast receiver类,我正在broad cast receiver类中的WiFi状态下进行操作。如果WiFi断开或连接,则执行一些操作。当wifi连接时,显示正确的消息,但当wifi断开连接时,不显示wifi断开连接消息,而是显示else语句 这是我的广播接收机类代码Java 获取WiFi状态并使用广播接收器对其进行操作,java,android,Java,Android,我正在我的应用程序中使用broad cast receiver类,我正在broad cast receiver类中的WiFi状态下进行操作。如果WiFi断开或连接,则执行一些操作。当wifi连接时,显示正确的消息,但当wifi断开连接时,不显示wifi断开连接消息,而是显示else语句 这是我的广播接收机类代码 public class WifiReceiver extends BroadcastReceiver { private static final String TAG = "Netw
public class WifiReceiver extends BroadcastReceiver {
private static final String TAG = "NetworkStateReceiver";
@Override
public void onReceive(final Context context, final Intent intent) {
Log.d(TAG, "Network connectivity change");
if (intent.getExtras() != null) {
final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
//check if wifi is connected
if (ni != null && ni.isConnectedOrConnecting()) {
Log.i(TAG, "Network " + ni.getTypeName() + " connected");
}
else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
Log.i(TAG, "wifi disconnected");
}
else {
Log.i(TAG, "Network else state");
}
}
在舱单上登记
<receiver android:name=".WifiReceiver">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
一个工作示例
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = networkInfo.getState();
if(state == NetworkInfo.State.CONNECTED)
{
Log.d("Tag","Connected");
}
if(state == NetworkInfo.State.DISCONNECTED)
{
if(manager.isWifiEnabled())
{
Log.d("Tag","Disconnected");
}
}
}
}
创建Wifi对象
wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
然后
为什么要否决投票?有什么原因吗?谢谢@XäiñUl Abideen。但我需要wifi断开连接条件。没有微粒来检查网络是否与wifi或数据断开。我需要wifi断开连接条件。我正在节省wifi断开连接的时间,但问题是当wifi连接时,它首先调用其他条件,然后调用if条件。尝试使用反向条件,但如果wifi连接和wifi断开,我需要这两个条件。不工作。我已经试过你的代码了。它没有打印任何条件
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
if (wifi.isWifiEnabled()) {
//perform action
}
else {
//perform action
}