现在的位置: 首页 > 综合 > 正文

【android】监听网络变化连续多个广播的问题解决

2013年09月15日 ⁄ 综合 ⁄ 共 1135字 ⁄ 字号 评论关闭

问题:

public class NetStatReceiver extends BroadcastReceiver {
 public static final String netACTION = "android.net.conn.CONNECTIVITY_CHANGE";
 @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
this.context = context;
if (intent.getAction().equals(netACTION)) {
// Intent中ConnectivityManager.EXTRA_NO_CONNECTIVITY这个关键字表示着当前是否连接上了网络
boolean isBreak = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if (!isBreak) {//有网络
  //3G跟WIFI切换的时候,会收到三个这样的广播,第一个广播把wifi连接上,第二个广播到3G关闭掉,第三个广播把wifi连接上。但是我这里只想提醒用户一次啊,怎么把另外两次提醒屏蔽掉呢?谁有好的方法,android方面着手的,或者java方面着手的。
  }else {
  }

 

解决办法:

NetworkInfo netInfo = (NetworkInfo) b.get(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = netInfo.getState();
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

if ((state == NetworkInfo.State.CONNECTED) && (activeNetInfo != null) && (activeNetInfo.getType() != netInfo.getType())) {return;}



activeNetInfo.getType() != netInfo.getType()

http://topic.csdn.net/u/20121023/09/1fe1c63b-4ec9-4ae2-9b98-e7e86bd783d0.html

抱歉!评论已关闭.