如何知道何时开始启动另一个应用程序?

问题描述:

可能重复:
Android:how does application Protector app works?如何知道何时开始启动另一个应用程序?

怎么能当新的应用程序开始启动通知我?很明显,我点击应用程序图标,应用程序开始启动,我想将我的服务设置为该事件的观察者(如果有的话)。有没有什么事件或某种方式知道应用程序启动之前?

+0

在onCreate()方法你可以做编码,并发送所需的信息,你想要的,这就是它根据我。 :) – Harpreet 2012-04-17 16:24:24

+0

但是,如何才能进入该应用程序的方法? oO – Javidan 2012-04-17 16:27:25

+0

我什么也没有,只有那个事件的监听者(如果有的话) – Javidan 2012-04-17 16:28:00

android listen for app launch

你不能真正做到这一点有意向或者类似的东西。看看这个人的暴力破解。不是一个很好的解决方案,但最接近你会得到。

+0

,该应用会继续启动还是等待回叫? – Javidan 2012-04-17 17:38:31

+0

你错过了答案。答案是使用链接问题部分中的代码创建服务。 ACTION_PACKAGE_FIRST_LAUNCH不会为你做任何事情。此外,这种解决方案将迅速耗尽使用此应用程序的任何人的电池。我相信这会让人们考虑卸载足够的漏洞。 – 2012-04-17 17:41:34

+0

我想这样。在我的应用程序服务安装在设备上后,应用程序需要重新启动手机。和任何应用程序(除系统应用程序)开始启动时(第一次)总是ACTION_PACKAGE_FIRST_LAUNCH被调用,我检查该应用程序是否在阻止列表中,然后如果我可以我中止该过程我中止 – Javidan 2012-04-17 17:46:19

如果我是你,我会打电话让ActivityManager

getSystemService(Context.ACTIVITY_SERVICE) 

,然后设置我的程序用下面的代码:

private final static Handler updateHandler = new Handler(); 
private static long WAKEUP_INTERVAL = 10000; // 10secs? 

private Runnable periodicUpdate = new Runnable() { 
    @Override 
    public void run() { 
     checkRunningProcesses(); 
     updateHandler.postDelayed(this, WAKEUP_INTERVAL); 
    } 
}; 

做以下两个定期检查东西:

  1. 检查getRecentTasks()找出用户最近启动了什么(请求小号GET_TASKS许可)
  2. getRunningAppProcesses()获得并保持以防万一定期检查间隔正在运行的进程的某处名单已选择过长并增加了一些流程/删除,但在getRecentTasks()

这并没有表现出我无法立即获得关于程序启动的通知,但可以尽快找到(几秒钟后,也许)来做一些事情。

还有一件事,当屏幕变黑时停止检查可能是一个明智的想法,以节省电池。