在我的androidManifest中,我的mainActivity几乎没有系统意图过滤器。
有没有办法检测哪个意图过滤器打开了我的活动?
同样适用于android服务 - 有没有办法检测?
我知道broadcast
有一个有意图的人,我可以分析哪个意图唤醒了它。
答案 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);
希望它有所帮助。