gpt4 book ai didi

android - 无法禁用广播接收器

转载 作者:行者123 更新时间:2023-11-30 03:37:00 26 4
gpt4 key购买 nike

我从 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);
}

在 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>

当我使用 android:enabled="false" 部署时

我可以启用它一次。但是当我想禁用时。没有任何反应,我无法禁用它。它仍然阻止来电。

我的设备是 Samsung Galaxy S2,Android 2.3.3

有什么帮助吗?谢谢

最佳答案

您可以尝试从代码中注册/取消注册,而不是在 list 中声明接收者。例如

private class MyPhoneStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);

}
}


private MyPhoneStateListener phoneStateListener = new MyPhoneStateListener();

启用

        telephonyManager.listen(phoneStateListener, LISTEN_CALL_STATE);

并禁用

    telephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_NONE);

在哪里

        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

关于android - 无法禁用广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com