2014-12-06 16 views
0

標題很糟糕,對不起。可以想出如何簡單地說這一點。Android:如何知道前臺打開了什麼應用程序,並在進入背景時執行某些操作

因此,我正在開發一款Android應用程序,該應用程序僅適用於我自己的幾款將公開使用的平板電腦。

我需要一個在後臺運行的服務(或者我現在認爲,如果可能的話證明我錯了),它跟蹤哪個應用程序是前臺,以及何時該應用程序轉到後臺服務啓動活動,將前臺顯示給用戶一些東西(例如,像某些廣告,或者一些要求開始評級的評論窗口)。

這怎麼辦?

謝謝。 E:其他應用程序可以是第三方,所以我不能修改這些代碼。

回答

0

當你在那個時候開始其他活動時,你當前的活動是OnPause()狀態,而其他活動是onCreate()狀態。

您必須參考Activity LifeCycle

0

您必須使用輔助功能服務。從Android棒棒糖開始,您無法收集這類信息。唯一的方法是通過可訪問性docs

+0

更好,如果你提供的鏈接,而不是官方文檔實現這一 – VVB 2016-01-23 12:14:29

0

檢查您應該使用ActivityManager的其他正在運行的任務。

ActivityManager acm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningTaskInfo> Ru_tasks = acm.getRunningTasks(NUMBER_OF_TASKS_U_WANT); 
    if (!Ru_tasks .isEmpty()) { 
     LOOP FOR EACH TASK (i is counter) 
     ComponentName topActivity = tasks.get(i).topActivity; // Or replace .topactivity with task name 
     if (topActivity.getPackageName().equals(WHAT_YOU LOOK FOR)) { 
        //Do WHAT YOU WANT! 
     } 
    } 

得到GET_TASKS許可

+1

我發現這一點:「這種方法在API級別21被棄用棒棒糖,這種方法不再適用於第三方應用程序:引入以文檔爲中心的最近意味着它可以向調用者泄漏個人信息爲了向後兼容,它仍然會返回一小部分數據:至少調用者自己的任務,以及可能的其他任務,如已知不敏感的家。「所以它不再是那麼好的選擇。我可以保持4.4的平板電腦,但有一天我可能要5.0 – jyDev 2014-12-06 15:17:29

相關問題