2012-07-02 81 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**