java - Android 服务或 Activity 可以知道哪个 Intent 打开了它吗?

标签 java android service

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

有什么方法可以检测哪个 Intent 过滤器打开了我的 Activity ?

Android 服务也是如此 - 有办法检测吗?

我知道广播有一个有 Intent 的 Actor ,我可以分析哪个 Intent 唤醒了它。

最佳答案

Activity 中,您可以使用 getIntent() 方法来检索用于启动该 Activity 的 Intent 。

public Intent getIntent()

Return the intent that started this activity.

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

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

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

intent.getAction().equals(YOUR_FILTER_ACTION);

或者,如果您有其他要比较的 Intent ,可以使用 filterEquals() 方法:

intent.filterEquals(anotherIntent);

希望有帮助。

关于java - Android 服务或 Activity 可以知道哪个 Intent 打开了它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429436/

相关文章:

java - 使用java 8转换为map(拆分spring并制作key,对象的其他值作为value)

未找到 Java 8 总和和总数

java - 是否有工具可以检查 GWT JRE 模拟库违规情况?

android - 在蜂窝前版本的水平 LinearLayout 上使用分隔线

java - Android 打包问题 "error: Error: No resource found that matches the given name "

java - 从前台服务打开 Activity

java - 缓解 Hadoop 的跟腱问题

java - Assets 文件夹中 JSON 的国际化

用于位置的 Android 前台服务

amazon-web-services - 使用cloudwatch确定linux服务是否正在运行