隐式Intent响应与责任传递
Intent Filter匹配后的响应
当一个应用程序的组件通过一个隐式Intent启动后,它需要找到它要执行的动作以及执行动作需要的数据。
调用getIntent方法(一般在onCreate方法里)来释放Intent,从而启动一个组件,如下:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
Intent intent = getIntent();
}
使用getData和getAction方法来查找Intent的数据和动作。使用类型安全的get<type>Extra方法来释放临时信息包中的额外信息。
String action = intent.getAction();
Uri data = intent.getData();
传递责任
你可以使用startNextMatchingActivity方法来将动作处理的责任传递给下一个最匹配的应用程序组件,如下片段所示:
Intent intent = getIntent();
if (isAfterMidnight)
startNextMatchingActivity(intent);
这允许你可以为组件添加额外的条件,限制其超出Intent Filter能力以外的使用。
在某些情况下,你的组件可能希望在传递Intent到本地处理器之前能执行一些处理,或者提供用户一个选择。