獲取屏幕上正在顯示的activity

        用過ActivityManager的童鞋估計都知道,可以從ActivityManager裏面可以獲取到當前運行的所有任務,所有進程和所有服務,這是任務管理器的核心。


    
    那麼,從裏面我們可以發掘點什麼出來嗎?


    
    仔細看getRunningTasks的文檔,裏面說獲取的是系統中"running"的所有task,"running"狀態包括已經被系統凍結的task。而且返回的這個列表是按照順序排列的,也就是說第一個肯定比第二個後運行。


    
     getRunningTasks有個整型參數,表示返回列表的最大個數。那麼,我們如果把1作爲參數給進去,那麼他返回的task就是當前運行的那個task,然後從task中獲取到最頂層的activity,這個activity就是當前顯示給用戶的那個activity了。

 

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
Log.d("", "pkg:"+cn.getPackageName());
Log.d("", "cls:"+cn.getClassName()); 

          至於這個能做什麼,嘿嘿,我相信你知道的。


   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章