2012-07-10 139 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);