2011-12-14 136 views
1

我在做這取決於Web服務,併爲了使應用程序的應用程序的工作,我需要檢查,如果手機能夠連接到Web服務。我首先檢查手機是否有互聯網連接,如果有,我嘗試連接到我的網絡服務。如果它可以連接到該網站一切正常,但如果我因爲某種原因不能訪問它,如果我禁用我的PC爲例的連接,應用程序仍嘗試連接到網站造成強制關閉。有沒有什麼辦法讓應用程序嘗試連接到Web服務像15秒,如果在此時間將停止進行連接。Android的互聯網訪問控制

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    if (httpzRequest() == true) { 
     Toast t = Toast.makeText(this, "Success!", Toast.LENGTH_LONG); 
     t.setGravity(Gravity.CENTER, 0, 0); 
     t.show(); 

    } else { 
     Toast t = Toast.makeText(this, 
       "There's a problem with your internet connection", 
       Toast.LENGTH_LONG); 
     t.setGravity(Gravity.CENTER, 0, 0); 
     t.show(); 
    } 

} 

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

public boolean httpzRequest() { 
    if (isNetworkAvailable() == true) { 
     try { 

      HttpClient client = new DefaultHttpClient(); 
      URI site = new URI("http://www.google.se/"); 
      HttpGet request = new HttpGet(); 
      request.setURI(site); 
      HttpResponse response = client.execute(request); 

      return true; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.out.println(e); 
      return false; 
     } catch (URISyntaxException e) { 
      // TODO Auto-generated catch block 
      System.out.println(e); 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

}

+0

你有沒有添加的權限的表現? – iSun 2011-12-14 18:09:51

+0

是的,我有需要的權限 – Carlj901 2011-12-14 18:18:16

回答

0

與倒數計時器試試這個:

new CountdownTimer(30000, 1000) { //This is 30 seconds so change it to 1500 to make it 15 seonds 

public void onTick(long millisUntilFinished) { 
    mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
} 

public void onFinish() { 
    mTextField.setText("done!"); //Here run your code. 
} 
}.start(); 

另外,還要確保你添加清單允許互聯網連接

0

我認爲的一個選項是,

取一個全局變量秒。用零初始化它。現在把你的web服務代碼放在一個線程中,同時(true)或while(flag)循環。當你因爲任何事情而沒有得到迴應時,你可以用catch block來獲得它。在那裏增加全局變量值。在線程持續調用Web服務的時間間隔內放入線程。現在,在捕獲異常的地方放置if條件,如果全局變量和該用戶定義了變量匹配,則打破循環。並完成。 :)

我建議你運行的線程中調用Web服務,因爲有時候沒有線程的調用凍結UI線程同時。