哪个应用程序启动了我的应用程序?

Which app launched my app?

我有一个 Android 应用程序并注册了一个自定义 URL 方案。是否可以获取启动我的应用程序的应用程序(例如 Facebook、Chrome 等...)?目前,我只能找到如何获取被点击的 URL 而不是启动我的实际应用程序。我可以这样做还是我在追求不可能的事情?

谢谢

不,你不能。 当然,除非您定义了一个专有协议,其中调用 activity 在意图中包含其自身的名称,并且您也可以控制调用应用程序。显然,这不适用于诸如查明 Chrome 或 Facebook 是否给你打电话的情况,因为你不控制这些应用程序。

您使用 ActivityManager.getRecentTasks() 可能会取得一些有限的成功,并尝试找出任务列表中排名第 2 的应用程序,但是 API 在 Lollipop 中已被弃用,并且在较旧的平台,应用程序可以选择从最近的任务中排除,您的应用程序可以生成新任务而不是调用应用程序任务的一部分,等等。