android - Cannot Disable Broadcast Receiver -
i got logic disable/enable broadcast receiver here.
@override public void oncheckedchanged(compoundbutton v, boolean checked) { // todo auto-generated method stub if (v == disableblock) { manageblocksetting(checked); } } private void manageblocksetting(boolean disable) { log.e(tag, "disable : " + disable); int flag = disable ? packagemanager.component_enabled_state_disabled : packagemanager.component_enabled_state_enabled; componentname component = new componentname(settingactivity.this, phonecallreceiver.class); getapplication().getpackagemanager().setcomponentenabledsetting(component, flag, packagemanager.dont_kill_app); editsharedpreferences(storeconstantvalue.setting_disable_block, disable); }
and in manifest.xml
<receiver android:name="com.vsmart.unocaller.blockingservice.phonecallreceiver" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.phone_state" /> </intent-filter> </receiver>
when deploy android:enabled="false"
i can enable once. when want disable. nothing happens, can't disable it. still block incoming calls.
my device samsung galaxy s2 android 2.3.3
any help? thanks
instead of declare receiver in manifest can try registering/unregistering code. example
private class myphonestatelistener extends phonestatelistener { @override public void oncallstatechanged(int state, string incomingnumber) { super.oncallstatechanged(state, incomingnumber); } } private myphonestatelistener phonestatelistener = new myphonestatelistener();
to enable
telephonymanager.listen(phonestatelistener, listen_call_state);
and disable
telephonymanager.listen(phonestatelistener, phonestatelistener.listen_none);
where
telephonymanager telephonymanager = (telephonymanager) getsystemservice(telephony_service);
Comments
Post a Comment