Я пытаюсь включить и отключить широковещательный приемник с помощью этого метода PackageManager:
setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Широковещательный приемник зарегистрирован в манифесте. Приемник работает нормально, но когда я пытаюсь отключить его, он все равно получает широковещательные сообщения. Когда я отключаю приемник в манифесте с помощью "android:enabled="false"", приемник ничего не получает, но я не могу его включить.
Я вызываю метод изнутри службы.
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:
<receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
Получатель
public class OnNetworkChangedReceiver extends BroadcastReceiver {
private static final String TAG = "OnNetworkChangedReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "in OnNetworkChanged");
}
}
Вчера я также вызвал этот метод из Activity. Я думал, что это сработало, но сегодня уже ничего не работает. Может ли быть так, что иногда происходит большая задержка в намерении (android.net.conn.CONNECTIVITY_CHANGE), которое я вчера неправильно истолковал как отключение приемника?
Является ли подход с PackageManager правильным направлением или в идее есть основная ошибка?
Большое спасибо, Свен
0
вместоPackageManager.DONT_KILL_APP
также может помочь вам избавиться от активности, если я правильно читаю документы: developer.android.com/reference/android/content/pm/ в разделеSetComponentEnabledSetting
. - person Ehtesh Choudhury   schedule 07.05.2013