【问题标题】:How can I get the reason for WiFi disconnect broadcast如何获取 WiFi 断开广播的原因
【发布时间】:2017-10-30 15:13:56
【问题描述】:

我有一个已注册的清单广播接收器,用于监控 WiFi 断开连接。每次设备扫描 WiFi 时,我都会收到断开连接广播。我需要一些方法来确定广播是由于扫描 WiFi 还是设备实际与网络断开连接的结果。

public class WifiReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        if(!intent.getAction().equals("android.net.wifi.STATE_CHANGE"))
            return;
        NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if (networkInfo != null) {
            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                if(networkInfo.getDetailedState() == CONNECTED || networkInfo.getDetailedState() == DISCONNECTED)
                    PresenceData.loadData(context);
                if(networkInfo.getDetailedState() == CONNECTED) {
                    System.out.println("Wifi connected");
                    PresenceData.sendNotification("Wifi Connected", "You are now connected to " + PresenceData.getCurrentWifiSSID(context), context);
                    PresenceData.submitChanges(context);
                } else if(networkInfo.getDetailedState() == DISCONNECTED) {
                    System.out.println("Wifi Disconnected");
                    PresenceData.sendNotification("Wifi Disconnected", "Your wifi has disconnected", context);
                    UpdaterService.scheduleUpdate(context);
                }
            }
        }
    }
}

【问题讨论】:

  • 告诉我们你有什么代码
  • 好的,刚刚添加了

标签: java android


【解决方案1】:

您可以尝试使用NetworkInfo.State 来获取网络的当前状态。有各种可能的状态的枚举,例如失败、成功、扫描等。下面是如何检索信息的示例:

public class MainActivity extends AppCompatActivity {

private ConnectivityManager connectivityManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.connectivityManager = (ConnectivityManager) 
    this.getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
    System.out.println("Network Status " + info.getDetailedState().name());
    }
}

【讨论】:

  • 我已经在使用它,但我的问题是它扫描后会显示已断开连接。我正在尝试确定 WiFi 是最近断开连接还是刚刚扫描到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2016-05-02
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多