您的位置:首页 > 理论基础 > 计算机网络

Android程序检测网络是否可用

2013-07-17 12:17 405 查看
在做Android应用程序中,连接网络的时候,常常要用到检测网络状态是否可用,在这里分享一个比较好用的方法。

本人参考:http://blog.csdn.net/sunboy_2050/article/details/7896313 在此只作记录,感谢原作者。

首先在Activity里,定义一个检测网络状态的方法:

/**

* 对网络连接状态进行判断

*

* @return true, 可用; false, 不可用

*/

private boolean isOpenNetwork() {

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

if (connManager.getActiveNetworkInfo() != null) {

return connManager.getActiveNetworkInfo().isAvailable();

}

return false;

}

然后

/**

*网络可用就调用下一步需要进行的方法, 网络不可用则需设置

*/

private void initIntener() {

// 判断网络是否可用

if (isOpenNetwork() == true) {

// 网络可用,则开始加载。

initPross();//这里是我个人程序要进行网络加载的方法,根据自己的程序而定,灵活运用。

} else {

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

builder.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");

builder.setPositiveButton("是", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent intent = null;

try {

String sdkVersion = android.os.Build.VERSION.SDK;

if (Integer.valueOf(sdkVersion) > 10) {

intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);

} else {

intent = new Intent();

ComponentName comp = new ComponentName("com.android.settings",

"com.android.settings.WirelessSettings");

intent.setComponent(comp);

intent.setAction("android.intent.action.VIEW");

}

MainActivity.this.startActivity(intent);

} catch (Exception e) {

// Log.w(TAG,

// "open network settings failed, please check...");

e.printStackTrace();

}

}

}).setNegativeButton("否", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

//finish();//因为网络不可用的状态,也是不让自己的程序结束运行, 这是根据个人需要设置。

Toast.makeText(MainActivity.this, "网络异常,加载失败!", Toast.LENGTH_SHORT).show();

initAll();//这里是没有网络的时候,又不需要手动设置,则显示出来的一个静态页面,根据个人需要。

}

}).show();

}

}

然后把initIntener();方法在Activity的初始化方法实现就行了,启动Activity首先进行网络检测,再执行其他方法。

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏

setContentView(R.layout.main);

//检测网络是否可用

initIntener();

}

最后需要在AndroidManifest.xml里添加相关权限:

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

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

如有不对的地方,请大家多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: