android下检查网络不通的后续合理人性化操作(常用)

直接上代码 ,注释很详细


Main:


package com.gem.hsx;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Main extends Activity {
  
	Button btnok;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnok=(Button) findViewById(R.id.btnok);
        btnok.setOnClickListener(new View.OnClickListener() {

        	
			@Override
			public void onClick(View v) {
			Intent intent=new  Intent();
			intent.setClass(Main.this, Second.class);
			startActivity(intent);		
			}
		});
        
    }
}

Second:

/**
 * @author hsx
 */
package com.gem.hsx;

import android.app.Activity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

/**        
 *@author  hsx        
 *@date 2012-11-21         
 *@Description  在android开发中常常遇到网络连接,所以要进行网络判断,本文主要是侧重于在连接网络获取数据之后,
 *如果网路不通,数据没有获取到之后的操作。本文核心的操作是Common类中的方法
 */

public class Second extends Activity {
	
	Common common=new Common();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		init();

	}

	/** 
	 *@author  hsx
	 *@Description   
	 *
	 */ 
   /**
    * 加载起始数据
    */
	private void init() 
	{
		
         /**
          * 弹出一个进度对话框
          */
		common.showProgressDialog(Second.this);

        /**
         * 在此线程中进行网络连接的操作,并将获取到的数据通过message发送到handler中
         */
		new Thread(new Runnable() {

			@Override
			public void run() {
				for (int i = 0; i < 100000000; i++) 
				{

				}
				Message message=new Message();
				message.obj=null;
				handler.sendMessage(message);

			}
		}).start();


	}
	Handler handler=new Handler()
	{
           /**
            * 在handler中对数据进行判断,数据是否为空或者是其他,要根据具体情况,进行判断。
            */
		@Override
		public void handleMessage(Message msg) {
			if (msg.obj==null) 
			{
				common.setNetwork(Second.this);

			}
			super.handleMessage(msg);
		}
	};


}

Common:


/**
 * @author hsx
 */
package com.gem.hsx;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;

/**        
 *@author  hsx        
 *@date 2012-11-21         
 *@Description    
 */

public class Common 
{
	private ProgressDialog progressDialog;
	/**
	 * 显示进度对话框
	 *@author  hsx
	 *@Description 
	 *@param context  
	 *
	 */
	public void showProgressDialog(Context context)
	{

		progressDialog = new ProgressDialog(context);
		progressDialog.setTitle("数据加载中,请等待");
		progressDialog.show(); 
	}


	/**
	 * 网络判断
	 * @param ctx
	 * @return
	 */
	public  boolean isNetworkAvailable(Context ctx) 
	{
		ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = cm.getActiveNetworkInfo();     
		return (info != null && info.isConnected());
	}

	/**
	 * 让进度对话框消失,而且弹出对话框要求用户去设置网络
	 *@author  hsx
	 *@Description 
	 *@param context
	 *@param progressDialog  
	 *
	 */
	public  void  setNetwork(final Context context)	
	{
		progressDialog.dismiss();
		AlertDialog dialog ;
		dialog= new AlertDialog.Builder(context).create();
		dialog.setTitle("提示");
		dialog.setMessage("当前网络不可用,请设置正确的网络");
		dialog.setCanceledOnTouchOutside(false);
		dialog.setButton(DialogInterface.BUTTON_POSITIVE , "设置", new DialogInterface.OnClickListener()
		{			
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				context.startActivity(new Intent(Settings.ACTION_SETTINGS));
			}
		});
		dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener()
		{

			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				dialog.dismiss();

			}
		});	
		dialog.show();
	}
	
	/**
	 * 重写一个方法,主要是可以自定义ProgressDialog
	*@author  hsx
	*@Description 
	*@param context
	*@param p  
	*
	 */
	public  void  setNetwork(final Context context,ProgressDialog p)	
	{
		p.dismiss();
		AlertDialog dialog ;
		dialog= new AlertDialog.Builder(context).create();
		dialog.setTitle("提示");
		dialog.setMessage("当前网络不可用,请设置正确的网络");
		dialog.setCanceledOnTouchOutside(false);
		dialog.setButton(DialogInterface.BUTTON_POSITIVE , "设置", new DialogInterface.OnClickListener()
		{			
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				context.startActivity(new Intent(Settings.ACTION_SETTINGS));
			}
		});
		dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener()
		{

			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				dialog.dismiss();

			}
		});	
		dialog.show();

	}	
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值