Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在按钮上注册接收器单击_Android_Broadcastreceiver_Intentfilter - Fatal编程技术网

Android 在按钮上注册接收器单击

Android 在按钮上注册接收器单击,android,broadcastreceiver,intentfilter,Android,Broadcastreceiver,Intentfilter,我正在创建一个应用程序,其中一个类型为broadcastReceiver的接收器将通过单击按钮以编程方式注册。i、 例如,当用户按下应用程序上的按钮时,接收器必须注册。再次单击另一个按钮时,将调用OnDestroy()方法并注销接收器 编码如下所示: public class MainActivity extends Activity { private BroadcastReceiver receiver=new BroadcastReceiver(){ @Override

我正在创建一个应用程序,其中一个类型为broadcastReceiver接收器将通过单击按钮以编程方式注册。i、 例如,当用户按下应用程序上的按钮时,接收器必须注册。再次单击另一个按钮时,将调用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,但没有用

我错在哪里


提前感谢。:)

这并不能回答为什么接收器没有注册,但不直接调用
onDestroy()
。通过调用
finish()。另外,发布显示异常的日志猫。引发了哪种异常?想想看,android.intent.action.CALL和android.intent.action.MAIN都不是你可以用接收器收听的东西。它们是
Intent
操作,用于启动另一个
活动
,您不想执行该操作。谢谢Squonk。我还必须做什么??抛出invalidArgumentException。