按钮点击启用和禁用广播接收器

Akh*_*hil 4 android broadcastreceiver

我想在按钮点击时启用和禁用广播接收器以完成启动.接收器不应响应,直到按钮被单击一次.我确实看到了一些类似的问题,但没有答案有效..请帮助......

我尝试了这段代码,但没有用..

PackageManager pm  = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName("mypackage", ".receivername");
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

els*_*lsa 20

试试这个

b1.setOnClickListener(new View.OnClickListener() {

     @Override
     public void onClick(View v) {
        // TODO Auto-generated method stub

            PackageManager pm  = Re_editActivity.this.getPackageManager();
            ComponentName componentName = new ComponentName(currentActivity.this, name_of_your_receiver.class);
            pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                            PackageManager.DONT_KILL_APP);
            Toast.makeText(getApplicationContext(), "activated", Toast.LENGTH_LONG).show();

            }
        });

b2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            PackageManager pm  = Re_editActivity.this.getPackageManager();
            ComponentName componentName = new ComponentName(currentActivity.this, name_of_your_receiver.class);
            pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                            PackageManager.DONT_KILL_APP);
            Toast.makeText(getApplicationContext(), "cancelled", Toast.LENGTH_LONG).show();
        }
    });
Run Code Online (Sandbox Code Playgroud)

这里button1用于激活广播接收器,button2用于去激活它还需要在清单文件中注册你的广播接收器并进行设置

<receiver android:name="name_of_your_receiver" android:enabled="false">
        <intent-filter >                
            <action android:name="android.intent.action.BOOT_COMPLETED"/>                
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)