2011-12-14 89 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线程同时。