Android 检查网络连接情况(参考整合)

        开发的应用需要用到网络,当没有网络的时候,程序就直接奔溃了。感觉这样子的用户体验很差。于是就去网络上参考了一下解决方法。就是在开启应用的时候,进行网络的连接状态的检查,如果是没有连接网络就跳出提示。

        参考了一下网络资源,我决定把他们整合起来,也方便以后自己的查询和使用。主要有两种。

   1.这个直接上代码,大家一看就明白了。在网络没连接的时候,会提示跳转到设置去设置网络。

ConnectivityManager con = (ConnectivityManager) AndroidWelcome.this
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkinfo = con.getActiveNetworkInfo();
		if (networkinfo == null || !networkinfo.isAvailable()) {}

判断完网络状态后:

// 网络未连接时,调用设置方法
	private void setNetwork() {
		Toast.makeText(this, "当前网络不可用,请检查设备网络连接!", Toast.LENGTH_SHORT).show();

		Builder builder = new Builder(AndroidWelcome.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("网络提示信息");
		builder.setMessage("网络不可用,如果继续,请先设置网络!");
		builder.setPositiveButton("设置", new OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				Intent intent = null;
				/**
				 * 判断手机系统的版本!如果API大于10 就是3.0+ 因为3.0以上的版本的设置和3.0以
				 * 下的设置不一样,调用的方法不同。
				 */
				if (android.os.Build.VERSION.SDK_INT > 10) {
					intent = new Intent(
							android.provider.Settings.ACTION_WIFI_SETTINGS);
				} else {
					intent = new Intent();
					ComponentName component = new ComponentName(
							"com.android.settings",
							"com.android.settings.WirelessSettings");
					intent.setComponent(component);
					intent.setAction("android.intent.action.VIEW");
				}
				startActivity(intent);
			}
		});

		builder.setNegativeButton("取消", new OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				AndroidWelcome.this.finish();// 结束程序
			}
		});
		builder.create();
		builder.show();
	}

	/**
	 * 网络已经连接,然后去判断是wifi连接还是GPRS连接 设置一些自己的逻辑调用
	 */
	private void isNetworkAvailable() {

		State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
				.getState();
		State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
				.getState();
		if (gprs == State.CONNECTED || gprs == State.CONNECTING) {
			Toast.makeText(this, "当前使用的网络是3G !", Toast.LENGTH_SHORT).show();
		}
		if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
			Toast.makeText(this, "当前使用的网络是Wifi !", Toast.LENGTH_SHORT).show();

		}

	}

大家就可以将需要实现的功能和处理的事件添加到,有网络连接的if判断下去实现就可以了。


2.第二个,也是网络上看到的,没有去亲测。但是评语表示很多人在用。代码语句量也比较少,我下次开发可能也会选者它。上代码:

/**
	 * 检验网络连接 并toast提示
	 * 
	 * @return
	 */
	public boolean note_Intent(Context context) {
		ConnectivityManager con = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkinfo = con.getActiveNetworkInfo();
		if (networkinfo == null || !networkinfo.isAvailable()) {
			// 当前网络不可用
			Toast.makeText(context.getApplicationContext(), "请先连接Internet!",
					Toast.LENGTH_SHORT).show();
			return false;
		}
		boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
				.isConnectedOrConnecting();
		if (!wifi) { // 提示使用wifi
			Toast.makeText(context.getApplicationContext(), "建议您使用WIFI以减少流量!",
					Toast.LENGTH_SHORT).show();
		}
		return true;

	}



接下来,会发现,我们调用了系统的东西。那么权限设置是不能少的。不然就得不到数值。其实权限也就才2条,我为了保险起见,我设置了三条。

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


功能介绍完~~

加个效果图:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值