2012-07-02 82 views
4

我想啓用和禁用廣播接收器啓動完成按鈕點擊..接收器應該不響應,直到按鈕被點擊一次。我確實看到了一些類似的問題,但答案非工作..請幫助...啓用和禁用按鈕點擊廣播接收器

我想這個代碼,但沒有工作..

PackageManager pm = getApplicationContext().getPackageManager(); 
ComponentName componentName = new ComponentName("mypackage", ".receivername"); 
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
+0

笑納/上投票的答案,如果你有你的解決方案:) –

回答

18

試試這個

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

這裏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> 
1

示例代碼,你可以寄存器您接收器內的onCreate方法和的onDestroy方法你註銷它,

private BroadcastReceiver receiver; 

    @Overrride 
    public void onCreate(Bundle savedInstanceState){ 

     // your oncreate code 

     IntentFilter filter = new IntentFilter(); 
     filter.addAction("SOME_ACTION"); 
     filter.addAction("SOME_OTHER_ACTION"); 

     receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //do something based on the intent's action 
     } 
     } 

     registerReceiver(receiver, filter); 
} 

記住的onDestroy方法運行此:

@Override 
protected void onDestroy() { 
    unregisterReceiver(receiver); //unregisterReceiver can be anywhere based on your requirement 
} 
+0

感謝您的時間和精力。我想這對按鈕點擊,但不工作... – Akhil

0

試試這個:

YourBroadcastReceiver mReceiver = new YourBroadcastReceiver(); 
IntentFilter filter = new IntentFilter(); //Filter for your receiver... 
filter.addAction(your action goes here...); 
registerReceiver(mReceiver , filter); **// Register** 

unregisterReceiver(mReceiver); **// Unregister**