gpt4 book ai didi

android - 启用和禁用广播接收器

转载 作者:IT王子 更新时间:2023-10-28 23:59:14 26 4
gpt4 key购买 nike

我尝试使用此 PackageManager 方法启用和禁用广播接收器:

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

广播接收器已在 list 中注册。接收器工作正常,但是当我尝试禁用它时,它仍然会收到广播消息。当我通过“android:enabled="false"”禁用 list 中的接收器时,接收器没有收到任何东西,但我无法启用它。

我从服务内部调用该方法。

    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 list :

    <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 内部调用了该方法。我认为它有效,但今天没有任何效果了。难道是我昨天误解为禁用接收器的 Intent (android.net.conn.CONNECTIVITY_CHANGE)有时会出现很大延迟?

PackageManager 的方法是正确的方向还是这个想法存在基本错误?

非常感谢,斯文

最佳答案

嗯,你基本上拥有的似乎还可以。我在 one of my projects 中有以下代码:

boolean enabled=prefs.getBoolean(key, false);
int flag=(enabled ?
PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
ComponentName component=new ComponentName(EditPreferences.this, OnBootReceiver.class);

getPackageManager()
.setComponentEnabledSetting(component, flag,
PackageManager.DONT_KILL_APP);

当我没有任何需要安排的 Activity 警报时,我使用它来禁用 BOOT_COMPLETED 接收器。

我的猜测是您的 ComponentName 设置不正确(例如,您的前导 .)。试试我正在使用的构造函数,它以 ContextClass 作为参数。

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

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