Android服务或活动可以知道打开它的意图吗?

时间:2014-01-29 11:16:09

标签: java android service

在我的androidManifest中,我的mainActivity几乎没有系统意图过滤器。

有没有办法检测哪个意图过滤器打开了我的活动?

同样适用于android服务 - 有没有办法检测?

我知道broadcast有一个有意图的人,我可以分析哪个意图唤醒了它。

2 个答案:

答案 0 :(得分:1)

您可以在Activity的onCreate()上使用方法getIntent()来获取启动活动或服务的意图,然后从意图中获取操作和附加内容。

但是,你无法知道是谁调用了你的活动或服务,这在android中是不可能知道的。

答案 1 :(得分:1)

活动中,您可以使用getIntent()方法检索用于启动该活动的意图。

  

public Intent getIntent()

     

返回开始此活动的意图。

服务中,您可以通过onStartCommand(..)方法中的参数检查您收到的意图:

public int  onStartCommand (Intent intent, int flags, int startId) 

然后在这两种情况下,使用“调用者”意图,您可以比较其值,例如操作,以检查使用了哪个过滤器:

intent.getAction().equals(YOUR_FILTER_ACTION);

或者,如果您有另一个要与之比较的意图,可以使用filterEquals()方法:

intent.filterEquals(anotherIntent);

希望它有所帮助。