以编程方式创建静态 android 广播接收器
create static android broadcast reciever programatically
您好,有没有办法以编程方式创建静态广播接收器?
文档中说有两种使用接收器的方法:
- 通过manifest注册(静态,非app时可以使用运行)
- 通过application Context注册(动态且只能在activity/app为运行时使用)
我找不到以编程方式注册静态接收器的方法。有没有办法做到这一点?
您不能在运行时修改清单。因此,您不能在运行时注册 "static" 接收器。
您可以 在运行时启用和禁用清单注册接收器。将 <receiver>
元素上的 android:enabled
属性设置为您希望的起始状态(例如,false
表示禁用)。然后,使用 PackageManager
和 setComponentEnabledSetting()
在运行时更改启用状态。禁用的接收器将不会响应广播。
//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();
}
您好,有没有办法以编程方式创建静态广播接收器?
文档中说有两种使用接收器的方法:
- 通过manifest注册(静态,非app时可以使用运行)
- 通过application Context注册(动态且只能在activity/app为运行时使用)
我找不到以编程方式注册静态接收器的方法。有没有办法做到这一点?
您不能在运行时修改清单。因此,您不能在运行时注册 "static" 接收器。
您可以 在运行时启用和禁用清单注册接收器。将 <receiver>
元素上的 android:enabled
属性设置为您希望的起始状态(例如,false
表示禁用)。然后,使用 PackageManager
和 setComponentEnabledSetting()
在运行时更改启用状态。禁用的接收器将不会响应广播。
//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();
}