2012-07-10 70 views
0

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

这里是我的清单:

<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()) { 
    ???????????? 
} 

回答

0

你可以做的是使用SharedPreference并设置flag当你的设备完成启动,并检查标志启用和禁用您的BroadCastReceiver

+0

谢谢! SharedPreferences像魅力一样工作。 – Denizen 2012-07-10 07:57:44

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