现在的位置: 首页 > 综合 > 正文

android中检测网络的方法及应用

2017年11月15日 ⁄ 综合 ⁄ 共 2739字 ⁄ 字号 评论关闭

    第一次在这个论坛上写文章,在深夜写点简单的东西,也好!

    做android也快两年了!但还没有写过什么文章,主要是没那个习惯去写,现在想通了,还是要写点东西才觉得这两年来没有白过,不然以后想找点东西都是在网络上找,自己写点东西的话就可以在自己的博客中看看就可以了!比别人写的说不定还好!好了!扯淡就到此了!

   今天写了一个TV高清播放器上的天气预报,虽然都是以前用过的东西,自己决定写博客了!就不要怕简单,希望自己一直简直下去;

   简单的判断网络是否连接:

  

public static boolean isConnect(Context context) { 
	// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) 
	try { 
		ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
		if (connectivity != null){ 
			// 获取网络连接管理的对象 
			NetworkInfo info = connectivity.getActiveNetworkInfo(); 
			if (info != null&& info.isConnected()) { 
		          // 判断当前网络是否已经连接 
		          if (info.getState() == NetworkInfo.State.CONNECTED){ 
		              return true; 
		          } 
			} 
		} 
	} catch (Exception e) {
             System.out.println(e.toString()); 
	} 
   return false; 
} 

要想在一个应用的开始就判断网络是否可用就可以这样做:写一个Timer的定时器去检测:

TimerTask timerTask = new TimerTask()
{
@Override
public void run() {

      //

              if(isConnectedFlag){
Intent intent = new Intent(MainActivity.this,TargetActivity.class);

startActivity(intent);//跳转画面也可以进行其他的处理;

}else{

//如果没有网络连接,则弹出提示框;

                          new AlertDialog.Builder(MainActivity.this) 
.setTitle(MainActivity.this.getResources().getString(R.string.internet_err)) 
.setMessage(MainActivity.this.getResources().getString(R.string.internet_failed)) 
.setPositiveButton(MainActivity.this.getResources().getString(R.string.internet_yes), 
                                new DialogInterface.OnClickListener() { 
                                                          @Override 
                                                                          public void onClick(DialogInterface arg0, int arg1) { 
                                                                                            progressDialog1.dismiss();
                                                                                    android.os.Process.killProcess(android.os.Process.myPid()); 
                                                                                            System.exit(0); 
                                                  } 
                              }).show(); 

}
};

在onResume()方法中添加启动定时器:

private Timer timer = null;

private boolean isConnectedFlag = true;

//两个变量

@Override
protected void onResume() {
super.onResume();

if(null == timer)
{
// 检测网络
this.isConnectedFlag = isConnect(this);
// 定时 1 秒,自动跳向主界面
timer = new Timer();
timer.schedule(timerTask, 1000);
}
}

当然网络的服务还是要加权限的:

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

通过网络的检测可以加载一个网页:如下为一个网页的加载方法:

private String getXmlInfo(String weather_url){
String  service_back_data = null;
        HttpGet httpGet = new HttpGet(weather_url);  
        try {
        HttpResponse  httpResponse = new DefaultHttpClient().execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == 200)  {  
                                      service_back_data = EntityUtils.toString(httpResponse.getEntity());
                                     return  service_back_data;
 
                         }  
} catch (Exception e) {
System.out.println("e-->>"+e.toString());
e.printStackTrace();
}
        return null;
}

返回的数据为网页中所有的字符串数据;

抱歉!评论已关闭.