我正在创建一个应用程序,其中广播接收器类型的接收器将在单击按钮时以编程方式注册。即,当用户按下应用程序上的按钮时,接收者必须注册。再次单击另一个按钮时,将调用OnDestroy() 方法并取消注册接收器。
编码是这样的:
public class MainActivity extends Activity {
private BroadcastReceiver receiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent)
{//Perform tasks here}
};
private IntentFilter filter = new IntentFilter("android.intent.action.CALL");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button)findViewById(R.id.b1);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
registerReceiver(receiver,filter);
}
});
final Button buttonEnd = (Button)findViewById(R.id.b2);
buttonEnd.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
onDestroy();
finish();
}
});
}
@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(receiver);
}
但是接收者没有注册,这在取消注册时会引发异常。
注意:我什至尝试过将 IntentFilter 操作作为android.intent.action.MAIN但没有用。
我哪里错了?
提前致谢。:)