我有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>
您可以看到它“倾听”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
广播。
我做错了什么?
答案 0 :(得分:1)
糟糕,自动完成让我使用了错误的IntentFilter
操作。
<action android:name="android.location.PROVIDERS_CHANGED" />
应该使用,当然不是android.intent.action.PROVIDER_CHANGED
。