码迷,mamicode.com
首页 > 其他好文 > 详细

获取网络状态及跳转到网络设置界面

时间:2015-06-16 14:51:02      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:android   网络   设置   

Android平台提供了ConnectivityManager 类,用于网络连接状态的检测。
在使用ConnectivityManager 时,必须在AndroidManifest.xml中添加访问网络状态的权限

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

MainActivity.java

package com.example.networksetting;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {

    // 网络连接管理对象
    private ConnectivityManager connectivityManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取网络连接管理的对象
        connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // 检测网络设置
        // 1.加入访问网络设置的权限
        // 2.获取网路连接
        // 3.获取可用网络的信息对象
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if (networkInfo != null) {
            Toast.makeText(this, "网络可用", 1).show();
        } else {
            new AlertDialog.Builder(this).setTitle("设置网路").setMessage("去设置网络")
                    .setPositiveButton("设置", new OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            settingNetWork();
                        }
                    }).setNegativeButton("取消", new OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消设置网络的操作", 1)
                                    .show();
                        }
                    }).show();
        }
    }

    public void settingNetWork() {
        // 隐式意图
        Intent intent = new Intent();

        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory("android.intent.category.LAUNCHER");
        intent.setFlags(0x10200000);
        intent.setComponent(new ComponentName("com.android.settings",
                "com.android.settings.Settings"));
        startActivity(intent);
    }
}

演示效果:
① 当有网络时,进入该应用会Toast网络可用。
技术分享
② 当没有网络时,进入该应用会弹出我们写好的对话框
技术分享
点击设置按钮将执行settingNetWork()方法跳转到设置页面,这里发送了一个隐式意图。

思考activity的可视化生命周期,为什么要将代码写在onStart( )方法里呢?

获取网络状态及跳转到网络设置界面

标签:android   网络   设置   

原文地址:http://blog.csdn.net/leoleohan/article/details/46516713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!