2014-03-28 2 views
5

Wi-Fi 연결이 완전히 설정 될 때까지 기다렸다가 계속 실행해야합니다. 나는 지금이 코드를 가지고 :네트워크 연결 대기

android.net.conn.CONNECTIVITY_CHANGE 

은 상태 변화를 듣고 현재 상태

상세 정보 here와 변수를 유지 :

wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
    if(!wifiManager.isWifiEnabled()) 
    { 
     Toast.makeText(this, "Connecting to wifi network", Toast.LENGTH_SHORT).show(); 
     wifiManager.setWifiEnabled(true); 
     //wait for connection to be establisihed and only then proceed 


    } 
+0

[Android에서 WIFI 연결이 설정되었을 때를 감지하는 방법] (http://stackoverflow.com/questions/5888502/how-to-detect-when-wifi-connection-has-been-established)의 복제본이있을 수 있습니다. - 안드로이드) – naXa

답변

4

은 당신이 등록 된 방송 수신기를 사용할 수 있습니다


그리고 수신기:

public class WifiReceiver extends BroadcastReceiver { 

    public static boolean connected = false; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager mgr = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = mgr 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     connected = networkInfo != null && networkInfo.isConnected(); 
    } 
} 

public boolean isConnected(){ 
    return connected; 
} 
+0

당신은 정교 할 수 있습니까? 주 스레드가 수신자 응답을 기다리게하려면 어떻게해야합니까? – Ricky

+0

예, 답을 수정했습니다. –

2

대신 메인 스레드를 차단, 당신은 그들에게 무슨 일이 일어나고 있는지 알려 연결 통지와 사용자에 화면을 소개 할 수있다.

만 와이파이 연결을 확인하는 데이터 서비스를 보장 할 것이라는

ConnectivityManager

주를 사용하면 연결을 확인할 수 있습니다 통지와 화면을 나타낸 반면. 네트워크 문제, 서버 중단 시간, 승인 등은 항상 발생할 수 있습니다. 사용의

예 :

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

당신은 안드로이드 개발자 웹 사이트에이에 대한 자세한 내용을 찾을 수 있습니다 : 또한

private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager 
     = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

가 오른쪽 허가를 추가하는 것을 잊지 마세요 Determining and Monitoring the Connectivity Status

행운을 빈다.