• 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" />

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


  • 相关阅读:
    PLSQL13
    01.Spring引入
    验证码重构
    短信验证码登录思路
    记住我 token保存到数据库
    图形验证码及其重构
    个性化用户认证流程
    01.Spring Security初识,表单认证
    堆和栈的区别
    系统分析与设计第二次作业
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3194341.html
Copyright © 2020-2023  润新知