2017-10-30 7 views
1

Wi-Fiの切断を監視するために使用している、登録済みのBroadcastReceiverがあります。デバイスが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); 
       } 
      } 
     } 
    } 
} 
+0

ちょうど –

+0

を持っているもののコードたちを表示します私はすでにそれを使用していますが、私の問題は、スキャンした後に切断されたと言うことです。私はWiFiが最近切断されたかどうか、またはそれがちょうどスキャンされたかどうかを判断しようとしています –

答えて

0

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()); 
    } 
} 
+0

これを追加し、[OK]を –

関連する問題