ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> Android 实时监听网络状态

Android 实时监听网络状态

来源:网络整理     时间:2016-01-29     关键词:

本篇文章主要介绍了"Android 实时监听网络状态",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下: 在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该...

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。

ConnectivityManager有四个主要任务:

1、监听手机网络状态(包括GPRS,WIFI, UMTS等)

2、手机状态发生改变时,发送广播

3、当一个网络连接失败时进行故障切换

4、为应用程序提供可以获取可用网络的高精度和粗糙的状态

当我们要在程序中监听网络状态时,只要一下几个步骤即可:

1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观或者提示是否能访问网络

package com.bsharksdk.receiver;

import com.bsharksdk.main.BSharkApi;
import com.bsharksdk.ui.BSToast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

/**
 * @author Javen
 * 
 */publicclassConnectionChangeReceiverextendsBroadcastReceiver {@OverridepublicvoidonReceive(Context context, Intent intent) {
        ConnectivityManager c context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo  mobNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo  wifiNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
            BSToast.showLong(context, "网络不可以用");//BSToast为显示提示的类//改变背景或者 处理网络的全局变量
        }else {
            //改变背景或者 处理网络的全局变量
        }
    }
}
package com.boens.service;

import android.content.Context;
import android.widget.Toast;

publicclassBSToast {publicstaticvoidshowLong(Context context, String infostr) {
        Toast.makeText(context, infostr, Toast.LENGTH_LONG).show();
    }

    publicstaticvoidshowShort(Context context, String infostr) {
        Toast.makeText(context, infostr, Toast.LENGTH_SHORT).show();
    }
}
//在AndroidManifest.xml中注册广播
<serviceandroid:enabled="true"android:name="com.boens.service.ConnectionChangeReceiver" >service>

2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

privatevoidregisterReceiver(){
        IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        myReceiver=new ConnectionChangeReceiver();
        this.registerReceiver(myReceiver, filter);
    }

3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

privatevoidunregisterReceiver(){
        this.unregisterReceiver(myReceiver);
    }

4、Activity中注册广播

package com.boens.login;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.boens.homepage.R;
import com.boens.service.ConnectionChangeReceiver;
import com.boens.tools.DecodeSampledBitmapFromResource;
/*
 * 欢迎动画加载
 */publicclassFirstActivityextendsActivity {private Button registerButton;
    private Button loginButton;
    private ImageView imageView_icon;
    privatestatic FirstActivity first_Activity;
     private ConnectionChangeReceiver myReceiver;
    publicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.firstpage_login);
            first_Activity = this;
            **registerReceiver();**
            registerButton = (Button) findViewById(R.id.register_btn_first);
            loginButton = (Button) findViewById(R.id.login_btn_first);
            //background_first = (RelativeLayout) findViewById(R.id.background_first);
            imageView_icon = (ImageView) findViewById(R.id.icon_imageview_first);
            //加载位图像素为200*200
            imageView_icon.setImageBitmap(DecodeSampledBitmapFromResource.decodeSampledBitmapFromResource(getResources(), R.drawable.logohuban, 200, 200));
            loginButton.setOnClickListener(new Button.OnClickListener() {

                @OverridepublicvoidonClick(View arg0) {

                    Intent intent = new Intent();
                    intent.setClass(FirstActivity.this, com.boens.login.MainActivity.class);
                    startActivity(intent);
                }

            });

            registerButton.setOnClickListener(new Button.OnClickListener() {

                @OverridepublicvoidonClick(View arg0) {

                    Intent intent = new Intent();
                    intent.setClass(FirstActivity.this, com.boens.login.RegisterActivity.class);
                    startActivity(intent);

                }

            });
        }
    /*注册网络状态监听*/
    **privatevoidregisterReceiver(){
        IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        myReceiver=new ConnectionChangeReceiver();
        this.registerReceiver(myReceiver, filter);
    }**

    /*取消网络状态监听*/
    **publicvoidunregisterReceiver(){
        this.unregisterReceiver(myReceiver);
    }**
    //程序退出时可获取实例来调用unregisterReceiver()方法取消广播publicstatic FirstActivity getInstance() {
         if (first_Activity != null) {
               return first_Activity;
           }
           returnnull;
    }

}

记得在 Activity中 设置变量 private ConnectionChangeReceiver myReceiver;

记得添加访问网络需要的权限

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.INTERNET" />
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了Android 实时监听网络状态,包括了方面的内容,希望对Android开发有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_308610.html

    相关图片

    相关文章