我尝试使用此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的方法是正确的方向还是该想法存在基本错误?
非常感谢,Sven
湖上湖
米琪卡哇伊
相关分类