2017-03-09 1 views
1

내 응용 프로그램에 문제가 있습니다. 일부 요소를 구문 분석 할 웹 페이지를 여는 서비스를 설정했습니다. 그래서 작업을 실행하기 전에 인터넷 연결을 점검해야합니다.Android Studio에서 실행 중에 만 연결 확인이 작동합니다.

package michele.alertsubito; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class MyReceiver extends BroadcastReceiver { 

    public Boolean isOnline() { 
     try { 
      Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 8.8.8.8"); 
      int returnVal = p1.waitFor(); 
      boolean reachable = (returnVal==0); 
      return reachable; 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return false; 
    } 


    @Override 
    public void onReceive(Context context, Intent intent) 
    { 

     JsoupAsyncTask task = new JsoupAsyncTask(context); 

     if (isOnline()){ 
      task.execute(); 
     } 
     else { 
      Toast.makeText(context, "alert: no connection!", 
        Toast.LENGTH_LONG).show(); 
     } 

    } 


} 

문제는 내 휴대 전화가 PC에 연결되어있는 경우이 검사는 시작이다 : 이 내 수신기입니다! 내 전화에서 응용 프로그램을 시작하면 (PC 연결이 끊어짐) my isOnline은 항상 false를 반환하고 "연결되지 않음"토스트를받습니다!

아무도 도와 줄 수 있습니까?

답변

0

당신은 당신의 장치가 interenet에 연결되어 있는지 확인하는 방법을 다음 사용할 수 있습니다

public static boolean isNetworkAvailable(Activity activity) { 
    ConnectivityManager connectivity = (ConnectivityManager) activity 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity == null) { 
     return false; 
    } else { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
}