zoukankan      html  css  js  c++  java
  • Android程序检测网络是否可用

    在做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" />

    如有不对的地方,请大家多多指教。


  • 相关阅读:
    第09组 Alpha冲刺(3/4)
    第09组 Alpha冲刺(2/4)
    第09组 Alpha冲刺(1/4)
    数值分析——多项式插值之Lagrange插值
    Deepin下安装搭建latex编写环境
    Deepin下安装Matlab2017a永久版
    数学建模方法-遗传算法(实战篇part 2)
    数学建模方法-遗传算法(实战篇part 1)
    数学建模方法-遗传算法(理论篇)
    Deepin系统下MATLAB中文字体乱码问题解决(加上字体美化)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3194341.html
Copyright © 2011-2022 走看看