【原创】Android 判断默认数据网络是否为开,若关则跳转到网络配置页面

声明:该方法仅用于判断默认数据网络,即每个月需要交X元,获得XX M的上网流量的数据网络。没有对wifi等,进行判断。


第一步,添加读取手机网络状态的权限

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

第二步,判断默认数据网络是否开启,并在未开启时打开网络配置页面

下图是Android中,各种网络名,及其描述。(在ConnectivityManager下可找到)

我们可以看到,TYPE_MOBILE为手机默认数据流量网络名。


所以,我们仅需要对该网络是否开启进行判断即可。

// What to do when you check on posBtn?
	private void checkOnPosBtn(){
		// TODO Force the user to set the network connected.
		ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(
				Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		if (false == networkInfo.isConnectedOrConnecting()) {
			openNetworkSettings();
		} else {			
			// TODO Login logic
		}
	}
	
	private void openNetworkSettings() {	
		AlertDialog dialog = new AlertDialog.Builder(this)
				.setTitle("开启网络服务")
				.setMessage("本软件需要使用网络资源,是否开启网络?")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// Go to the activity of settings of wireless
						Intent intentToNetwork = new Intent("/");
						ComponentName componentName = new ComponentName(
								"com.android.settings",
								"com.android.settings.WirelessSettings"
						);
						intentToNetwork.setComponent(componentName);
						intentToNetwork.setAction("android.intent.action.VIEW");
						startActivity(intentToNetwork);
						dialog.cancel();
					}
				})
				.setNegativeButton("否", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.cancel();
					}
				})
				.show();		
	}

其中,
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
这一句中,getNetworkInfo(ConnctivityManager.XX);这个XX可以有上面列举的TYPE_MOBILE和TYPE_WIFI两种,你可以根据你实际的网络要求进行相应的修改。


参考资料:

[1]Android判断网络状态方法详解

[2]Android判断网络状态,并在没有网络的时候,打开网络设置对话框


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值