以编程方式创建静态android广播接收器

时间:2016-06-08 10:37:34

标签: android broadcastreceiver

您有没有办法以编程方式以编程方式创建静态广播接收器?

从文档中可以看出,有两种方法可以使用收件人:

  1. 通过清单注册(静态,可以在应用未运行时使用)
  2. 注册应用程序上下文(动态,只能在活动/应用程序运行时使用)
  3. 我找不到以编程方式注册静态接收器的方法。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您无法在运行时修改清单。因此,您无法注册"静态"接收器在运行时。

可以在运行时启用和禁用清单注册的接收器。将android:enabled元素的<receiver>属性设置为您想要的起始状态(例如,false表示禁用)。然后,使用PackageManagersetComponentEnabledSetting()在运行时更改启用状态。被禁用的接收器不会响应广播。

答案 1 :(得分:1)

//For dynamic execution
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        reciever = new IncomingCallReciever();
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.intent.action.PHONE_STATE");
        registerReceiver(reciever, filter);

    }


    @Override
    protected void onDestroy() {
        if (reciever != null) {
            unregisterReceiver(reciever);
            reciever = null;
        }
        super.onDestroy();
    }