Wi-Fi의 변경 사항을 감지하는 데 문제가 있습니다. Wi-Fi가 연결되어 있지 않으면 내 앱에서 Wi-Fi 네트워크를 모니터링하고 알림 대화 상자를 만들 것을 제안합니다. 시동시, 재개시 등에 또는 b. 언제든지 연결이 끊어집니다. 다음은 내 코드 (내가 this.registerReceiver (wifiStatusReceiver, 신규로 IntentFilter (WifiManager.WIFI_STATE_CHANGED_ACTION))와 onResume에 등록하고있어, 그리고 onPause에서 등록을 해제)입니다 :브로드 캐스트 수신기가 Wi-Fi 연결 끊김을 감지하지 못했습니다.
BroadcastReceiver wifiStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int extraWifiState = intent.getIntExtra(
WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
final String action = intent.getAction();
DialogFragment dialog = (DialogFragment) fragmentManager
.findFragmentByTag(WifiAlertDialogFragment.DIALOG_WIFI);
if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
NetworkInfo info = (NetworkInfo) intent
.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
logger.d("wifi changed, is still connected");
if (dialog != null)
dialog.dismiss();
} else {
logger.d("connection lost");
if (dialog == null)
WifiAlertDialogFragment.wifiCheck(HomeActivity.this);
}
}
switch (extraWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
WifiAlertDialogFragment.wifiCheck(HomeActivity.this);
break;
case WifiManager.WIFI_STATE_DISABLING:
Toast.makeText(HomeActivity.this, R.string.wifi_disabled,
Toast.LENGTH_SHORT).show();
WifiAlertDialogFragment.wifiCheck(HomeActivity.this);
break;
case WifiManager.WIFI_STATE_ENABLED:
if (dialog != null)
dialog.dismiss();
break;
case WifiManager.WIFI_STATE_ENABLING:
if (dialog != null)
dialog.dismiss();
Toast.makeText(HomeActivity.this, "Wifi Enabling",
Toast.LENGTH_LONG).show();
break;
case WifiManager.WIFI_STATE_UNKNOWN:
// no op
break;
}
}
};
업데이트 :
나의 새로운 코드는 다음과 같습니다. 연결이 끊어진 상태, 연결이 끊어져있는 상태, 연결되어있는 상태 등 연결 상태를 확인하기 때문에 SUPPLICANT_STATE_CHANGED_ACTION 만 사용하고 있습니다. 설정에서 Wi-Fi를 사용할 수 있는지 확인하기 때문에 다른 하나는 연결을 모니터링하는 데 꽤 쓸모가 없습니다. 아닙니다. – msnorth