Ative e desative um receptor de transmissão

Tento ativar e desativar um receptor de transmissão usando este método PackageManager:

setComponentEnabledSetting(componentName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

O receptor de transmissão está registrado no manifesto. O receptor funciona bem, mas quando tento desativá-lo, ele ainda recebe as mensagens de transmissão. Quando desabilito o receptor no manifesto por "android: enabled =" false "", o receptor não recebe nada, mas não consigo habilitá-lo.

Chamo o método de dentro de um serviç

    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);

Manifesto Android:

    <receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"
                android:enabled="true">
            <intent-filter>
                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
    </receiver>

O recepto

public class OnNetworkChangedReceiver extends BroadcastReceiver {
private static final String TAG = "OnNetworkChangedReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "in OnNetworkChanged");
    }
}

Também chamei o método de dentro de uma Activity ontem. Eu pensei que funcionava, mas hoje nada funciona mais. Às vezes, pode haver um grande atraso na intenção (android.net.conn.CONNECTIVITY_CHANGE) que eu interpretei ontem ontem como desativando o receptor?

A abordagem com o PackageManager está na direção certa ou há um erro básico na ideia?

Muito obrigado, Sven

questionAnswers(2)

yourAnswerToTheQuestion