2012-07-06 3 views
0

당신 중 일부에게는 매우 간단 할지도 모르는 질문을하고 싶습니다.안드로이드 앱이 연결 여부를 알아내는 것

내 응용 프로그램이 인터넷에 연결되어 있는지 어떻게 알 수 있습니까?

MySQL 데이터베이스에 연결하고 인터넷이없는 경우 AlertDialog가 있어야합니다.

new AsyncTask() { 
     ProgressDialog dialog = ProgressDialog.show(AppActivity.this, "Lade", "Daten werden abgerufen...", true); 
     @Override 
     protected void onPostExecute(Object result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      dialog.dismiss(); 
      max = Name.size()-1; 
      kontrolle = new boolean [max*2]; 

      pb.setMax(max/2); 

      java.util.Arrays.fill(kontrolle, false); 

      bilder(); 
     } 

     @Override 
     protected Object doInBackground(Object... arg0) 
     { 
      // TODO Auto-generated method stub 
       dialog.show(); 
       getData(); 
      return null; 
     } 
    }.execute(); 

private void getData() 
{ 
    String result = ""; 
    ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); 

    try 
    { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost("http://.../read.php"); 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     is=entity.getContent(); 
    } 
    catch(Exception e) 
    { 
     Log.e("log-tag","Keine Verbindung"+e.toString()); 
     Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show(); 
    } 

    try 
    { 

     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
     StringBuilder sb = new StringBuilder(); 
     String line = ""; 

     while((line= reader.readLine())!=null) 
       { 
        sb.append(line+"n"); 
       } 
     is.close(); 
     result = sb.toString(); 
     result.trim(); 
    } 
    catch(Exception e) 
    { 
     Log.e("log-tag","Error"+e.toString()); 
    } 
    try 
    { 
     JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++) 
     { 
      JSONObject json_data = jArray.getJSONObject(i); 


      ID.add((String) json_data.get("id")); 
      Name.add((String) json_data.get("name")); 
      Pts.add((String)json_data.get("pts")); 
     } 
    } 
    catch(Exception e) 
    { 
     Log.e("log-tag","Error2"+e.toString()); 
    } 
} 

어떻게 달성 할 수 있습니까? 난 아무 생각 내가이

catch(Exception e) 
{ 
    Log.e("log-tag","Keine Verbindung"+e.toString()); 
    Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show(); 
} 

이 일을 할 것이라고 생각하지 않지만 (내가 비행 모드에서 내 전화를 설정하기 때문에) 내가 아무 관련이없는 경우 그냥 끝없는해서 ProgressDialog :(

+1

여기에 중복 질문이 있습니다. http://stackoverflow.com/questions/9570237/android-check-internet-connection –

답변

1

존으로가있다 테일러는 이것이 언급 duplicate question

당신은 모바일 인터넷에 연결하고 연결되어있는 경우에 true를 반환하고 경우 경고 상자를 표시할지 여부를이

이 방법의 검사를 수행하려면 다음과 같은 코드를 사용할 수 있습니다 하지 :

private boolean isNetworkConnected() { 
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo ni = cm.getActiveNetworkInfo(); 
if (ni == null) { 
// There are no active networks. 
AlertDialog.Builder altDialog= new AlertDialog.Builder(this); 
altDialog.setMessage("No network connection!"); 
return false; 
} else 
return true; 
} 

는 매니페스트 파일에

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

편집이 추가

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

//mobile 
State mobile = conMan.getNetworkInfo(0).getState(); 

//wifi 
State wifi = conMan.getNetworkInfo(1).getState(); 

다음을 사용 :이 코드를 사용할 수있는 네트워크 유형을 얻으려면 이렇게 :

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { 
//mobile 
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { 
//wifi 
} 
+0

감사합니다. 죄송합니다. – user1364052

+0

도 wifi 개미 3g를 구분할 수 있습니까? – user1364052

+0

연결이 wifi 또는 3G, EDGE ...인지 확인하기 위해 내 대답을 편집 한 경우 –

관련 문제