我有2个不同的应用程序A和B,我想创建一个从B到A的特殊动画,即在B可见后打开A的时候。这意味着我需要以某种方式知道我的应用程序打开之前的应用程序。我可以有从B到A的不同场景 - 使用“最近的应用程序”(多任务处理)按钮,使用“返回”按钮,使用“主页”按钮(应用程序A是自定义主屏幕)。有什么想法怎么做? ActivityManager中的某些函数可能有所帮助,但它们在文档中有注释,表示不使用它们来实现逻辑和控制流。
答案 0 :(得分:1)
不确定这是否适用于不同的应用程序,但getCallingActivity() or getCallingPackage()怎么样?
如果这不起作用,当您启动指示启动应用程序的intent时,是否可以传递一些'extra' data in the bundle?
答案 1 :(得分:0)
我设法弄清楚如何实现这一点,它为我工作。
我使用了this answer,但将ActivityManager.getRunningTasks()
替换为提供ActivityManager.getRecentTasks()
的{{1}},并从结果的baseIntent成员中获取了组件名称。索引1处的信息是在当前应用程序打开之前运行的信息,与您返回应用程序的方式无关 - 返回按钮,主页按钮,最近按钮或从其他应用程序打开。
注意:这适用于您的应用启动时,例如在RECENT_WITH_EXCLUDED | RECENT_IGNORE_UNAVAILABLE
,但在您的应用关闭时(在onResume()
中调用时)不起作用,因为新的任务尚未加载到活动管理器中。因此,如果你还需要知道你要去哪个应用程序,那么它可能会更复杂一些。
注2:虽然文档告诉我们不要将上面的API用于任何类型的逻辑和控制流程,但我看到多任务/最近应用程序的代码完全相同,所以在我看来它不应该像写文档那样有风险。
注3:不要忘记按照上面提到的答案中的所有步骤操作,例如添加所需的权限,否则您将获得例外。在我的案例中成为系统的一部分使我更容易。