Android:如何了解以前的应用

时间:2013-11-21 21:55:10

标签: android

我有2个不同的应用程序A和B,我想创建一个从B到A的特殊动画,即在B可见后打开A的时候。这意味着我需要以某种方式知道我的应用程序打开之前的应用程序。我可以有从B到A的不同场景 - 使用“最近的应用程序”(多任务处理)按钮,使用“返回”按钮,使用“主页”按钮(应用程序A是自定义主屏幕)。有什么想法怎么做? ActivityManager中的某些函数可能有所帮助,但它们在文档中有注释,表示不使用它们来实现逻辑和控制流。

2 个答案:

答案 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:不要忘记按照上面提到的答案中的所有步骤操作,例如添加所需的权限,否则您将获得例外。在我的案例中成为系统的一部分使我更容易。