NetworkReceiver在更改网络状态后从未调用过

时间:2015-04-23 17:25:21

标签: android android-networking

为了在我的应用程序中节省电池,每当我的应用程序需要与云同步时,我首先检查网络是否可用。如果没有可用的连接,我按如下方式注册网络广播接收器。但这永远不会被称为。

我正在通过将设备置于飞行模式来测试它。我看到“Network Receiver ENABLED”消息。但在我禁用飞机模式后,在我的Wifi连接后,我希望看到“收到的网络更改意图”消息,它永远不会出现。

有谁可以指出我可能做错了什么?

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
networkReceiver = new NetworkReceiver();
registerReceiver(networkReceiver, filter);
Log.d(TAG, "Network Receiver ENABLED");

这是NetworkReceiver:

public class NetworkReceiver extends BroadcastReceiver {
    private static String TAG = NetworkReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context_, Intent intent_) {
        Log.d(TAG, "Received Network Change Intent");
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试以下选项。

  1. 如果您尚未在清单文件中声明,请设置网络访问权限:sample = { myVar:10; // this is your variable foo : function () { return this.myVar++; // use this keyword to access it. }, bar : function () { } };

  2. 使用上下文注册Receiver: 而不是<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> </uses-permission>使用registerReceiver(networkReceiver, filter);