onReceive()android.net.ConnectivityManager.CONNECTIVITY_ACTION

时间:2014-11-07 12:05:52

标签: android android-intent android-broadcast

在我的应用程序中需要检查互联网连接的变化。所以我们注册接收器" android.net.ConnectivityManager.CONNECTIVITY_ACTION"并在onReceive()处理连接更改,如下面的代码。

BroadcastReceiver receiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent)
    { 
        if (action.equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {
            // handle netwrk changes code
        }
    }
 };

上面的代码工作正常,它处理互联网连接的变化。但问题是,当我进入其他一些活动并回到此活动时,onReceive()方法将被执行,因为接收" android.net.ConnectivityManager.CONNECTIVITY_ACTION 的广播"我不想要它。谁能知道为什么会这样?

当我回到活动时,我不想接收 "android.net.ConnectivityManager.CONNECTIVITY_ACTION" 的广播。

1 个答案:

答案 0 :(得分:1)

尝试使用您的活动调用时,在单独的BroadcastReceiver类中创建broadcastreceiver

public class Netreciever extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
 if (action.equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {
        // handle netwrk changes code
    }
 }

的manifest.xml

 <receiver
        android:name=".Netreciever"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.conn.DATA_ACTIVITY_CHANGE" />
        </intent-filter>
    </receiver>