CONNECTIVITY_CHANGE、WIFI_STATE_CHANGED 和 PROVIDER_CHANGED 的 BroadcastReceiver

BroadcastReceiver for CONNECTIVITY_CHANGE, WIFI_STATE_CHANGED and PROVIDER_CHANGED

我的 MyBroadcastReceiver 设置如下:

    <receiver android:name=".MyBroadcastReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PROVIDER_CHANGED" />
        </intent-filter>
    </receiver>

如您所见 "listens" CONNECTIVITY_CHANGEWIFI_STATE_CHANGEDPROVIDER_CHANGED

前两个工作得很好,我的 BroadcastReceiver 被调用了。 但是,它永远不会被调用 PROVIDER_CHANGED(当我在 Android 5.1 上禁用位置时)。

MyBroadcastReceiver目前大致是这样:

@Override
public void onReceive(final Context context, final Intent intent) {
    final String action = intent.getAction();
    Log.d("ACTION", action);
    // ...
}

我尝试了不同的 AndroidManifest.xml 配置,但从未收到 PROVIDER_CHANGED 广播。

我做错了什么?

糟糕,自动完成让我使用了错误的 IntentFilter 操作。

 <action android:name="android.location.PROVIDERS_CHANGED" />

应该用,当然不用android.intent.action.PROVIDER_CHANGED