启用/禁用BroadcastReceivers

时间:2012-07-10 05:37:46

标签: android broadcastreceiver boot

我有一个广播接收器,可在设备完成启动时启动服务。但是我不知道如何在代码中禁用/启用它。

这是我的清单:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <receiver
        android:name=".BootReceiver"
        android:label="@string/app_name" >
      <intent-filter> 
          <action android:name="android.intent.action.BOOT_COMPLETED">
          <action android:name="android.intent.action.QUICKBOOT_POWERON">
      </intent-filter>
    </receiver>  

BootReceiver.java:

public class BootReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    context.startService(new Intent(context, TouchService.class));
   }    
}

我的问题是,我在这里放什么?

if (!rBoot.isChecked()) {
   ????????????
}

2 个答案:

答案 0 :(得分:0)

您可以使用SharedPreference并在设备完成启动时设置flag并检查启用和禁用BroadCastReceiver的标记。

答案 1 :(得分:0)

试试这个

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);