我在应用程序中使用了广泛的铸造接收器类,并且在宽阔的铸件接收器类中在WiFi状态上进行操作。如果WiFi断开或连接,请进行一些操作。当WiFi连接其显示正确的消息时,但是当WiFi断开其不显示WiFi断开消息时,请显示其他语句。
这是我用于广播接收器类的代码。
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);
然后
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
if (wifi.isWifiEnabled()) {
//perform action
}
else {
//perform action
}