J'essaie d'activer et de désactiver un récepteur de radiodiffusion par l'utilisation de ce PackageManager méthode:
setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Le récepteur de radiodiffusion est inscrite dans le manifeste. Le récepteur fonctionne très bien mais lorsque j'essaie de le désactiver, il reçoit encore les messages de diffusion. Lorsque je désactive le récepteur dans le manifeste par "android:enabled="false"", le récepteur ne reçoit rien, mais je ne peux pas l'activer.
J'appelle la méthode à partir de l'intérieur d'un service.
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName("com.app",
".broadcast_receivers.OnNetworkChangedReceiver");
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Android manifest:
<receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
Le Récepteur
public class OnNetworkChangedReceiver extends BroadcastReceiver {
private static final String TAG = "OnNetworkChangedReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "in OnNetworkChanged");
}
}
J'ai aussi appelé la méthode de l'intérieur d'une Activité d'hier. Je pensais que cela a fonctionné, mais aujourd'hui rien ne fonctionne plus. Se pourrait-il qu'il y a parfois un gros retard dans l'intention android.net.conn.CONNECTIVITY_CHANGE) que j'en ai mal interprété hier que la désactivation du récepteur?
Est l'approche avec le PackageManager la bonne direction ou est-il une erreur de base dans l'idée?
Merci beaucoup, Sven