【问题标题】:Android - Network State broadcast receiver does not receive intentAndroid - 网络状态广播接收器未收到意图
【发布时间】:2011-07-07 18:18:08
【问题描述】:

我有一个需要监听网络变化的广播接收器 -

BroadcastReceiver networkStateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        boolean noConnectivity =
            intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
        if(!noConnectivity)
        {
            //some stuff
        }
    }
};

我使用它注册 -

public void startListening() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        context.registerReceiver(networkStateReceiver, filter);
}

我在清单中添加了以下权限 -

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

当我将手机切换到飞行模式、关闭 wifi 等时,networkStateReceiver 仍然没有收到任何意图。我错过了什么吗?

【问题讨论】:

  • 我尝试了同样的问题...你解决了吗??

标签: android broadcastreceiver intentfilter


【解决方案1】:

尝试使用此操作:

Intent.ACTION_AIRPLANE_MODE_CHANGED

编辑

或者对于所有网络状态变化,使用:

"android.intent.action.SERVICE_STATE"

【讨论】:

  • 感谢您的回答。 :)
【解决方案2】:

你可以使用这个:

首先在@Override 之前添加这个

private boolean isConnected = true;
private Context c;

那就用吧

//check for connectivity:
ConnectivityManager connectivityManager = (ConnectivityManager) 
c.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo TestConnetion = connectivityManager.getActiveNetworkInfo();
if (TestConnetion == null){
isConnected=false;  
}

【讨论】:

  • 为什么会回答这个问题?这对将意图发送给接收者有何帮助?
猜你喜欢
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多