广播监听网络android,android 使用广播监听网络状态

参考:http://blog.csdn.net/androidbluetooth/article/details/7199708

博客 http://blog.csdn.net/androidbluetooth/article/details/6860146 详细的粘贴了很多判断网络的方法。

网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE .

下面是实现的 demo :

69c5a8ac3fa60e0848d784a6dd461da6.png

package mark.zhang;

import android.app.Service;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.os.IBinder;

import android.util.Log;

public class ListenNetStateService extends Service {

private ConnectivityManager connectivityManager;

private NetworkInfo info;

private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

Log.d("mark", "网络状态已经改变");

connectivityManager = (ConnectivityManager)

getSystemService(Context.CONNECTIVITY_SERVICE);

info = connectivityManager.getActiveNetworkInfo();

if(info != null && info.isAvailable()) {

String name = info.getTypeName();

Log.d("mark", "当前网络名称:" + name);

} else {

Log.d("mark", "没有可用网络");

}

}

}

};

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

IntentFilter mFilter = new IntentFilter();

mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

registerReceiver(mReceiver, mFilter);

}

@Override

public void onDestroy() {

super.onDestroy();

unregisterReceiver(mReceiver);

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

return super.onStartCommand(intent, flags, startId);

}

}

69c5a8ac3fa60e0848d784a6dd461da6.png

在 manifest 文件中需要加上一条权限:

回头再看看关于 CONNECTIVITY_ACTION 的介绍,从 api 中,我们还可以得到一个信息:

通过 intent 可以获取一些 EXTRA,如 EXTRA_NO_CONNECTIVITY。

boolean b = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);

更多信息可以参考 ConnectivityManager.

===========================================

在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析。

69c5a8ac3fa60e0848d784a6dd461da6.png

public class ConnectionChangeReceiver extends BroadcastReceiver {

@Override

public void onReceive( Context context, Intent intent ) {

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

if ( activeNetInfo != null ) {

Toast.makeText( context, "Active Network Type : " +

activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();

}

if( mobNetInfo != null ) {

Toast.makeText( context, "Mobile Network Type : " +

mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();

}

}

}

69c5a8ac3fa60e0848d784a6dd461da6.png

69c5a8ac3fa60e0848d784a6dd461da6.png

< !-- Needed to check when the network connection changes -->

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

< receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"

android:label="NetworkConnection">

< intent-filter>

< action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

< /intent-filter>

< /receiver>

69c5a8ac3fa60e0848d784a6dd461da6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值