如何使用交换机注册和注销BroadcastReceiver?

时间:2016-06-11 16:23:39

标签: android broadcastreceiver

我的应用中有一个广播接收器:

public class Ringmodechange extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

    }
}

我的 AndroidManifest.xml

<receiver
    android:name=".Ringmodechange"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.media.RINGER_MODE_CHANGED" />
    </intent-filter>
</receiver>

是否可以使用java代码注册和注销BroadcastReceiver?这个接收器正在后台工作。

实际上,我希望每次用户点击按钮时注册和取消注册接收器。

2 个答案:

答案 0 :(得分:2)

,可以使用ComponentNamePackageManager

启用BroadcastReceiver

ComponentName component = new ComponentName(context, Ringmodechange.class)
context.getPackageManager().setComponentEnabledSetting(component, PackageManager. COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP);

要禁用它:

ComponentName component = new ComponentName(context, Ringmodechange.class)
context.getPackageManager().setComponentEnabledSetting(component, PackageManager. COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);

答案 1 :(得分:0)

有一些很好的posts涵盖了这个主题。

基本上,在您的DataFrame.rdd.maponStart生命周期方法中,您应该进行更改。

documentation for BroadcastReceivers中,他们讨论了广播的生命周期以及安全隐患。

相关问题