2012-04-17 91 views
2

可能重複:
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

回答

0

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

1

如果我是你,我會打電話讓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()

這並沒有表現出我無法立即獲得關於程序啓動的通知,但可以儘快找到(幾秒鐘後,也許)來做一些事情。

還有一件事,當屏幕變黑時停止檢查可能是一個明智的想法,以節省電池。

相關問題