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_CHANGE
、WIFI_STATE_CHANGED
和 PROVIDER_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
我的 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_CHANGE
、WIFI_STATE_CHANGED
和 PROVIDER_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