声明:该方法仅用于判断默认数据网络,即每个月需要交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两种,你可以根据你实际的网络要求进行相应的修改。
参考资料:
[2]Android判断网络状态,并在没有网络的时候,打开网络设置对话框