2013-07-05 38 views
9

如何獲取設備上運行的應用程序中所有活動的列表。設備上運行的應用程序中所有活動的列表

例如:包括pdf生成和電子郵件活動。

我可以檢查活動的代碼,如:

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 

    // get the info from the currently running task 

    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

    Log.d("topActivity", "CURRENT Activity ::" 

      + taskInfo.get(0).topActivity.getClassName()); 

    ComponentName componentInfo = taskInfo.get(0).topActivity; 

    componentInfo.getPackageName(); 

然而,這將提供有關正在運行的活動是頂級活動的信息。

我的想法是白名單正在運行的活動,以便我的第三方應用程序可以在設備上運行它。所以我基本上需要應用程序中的所有運行活動。

+0

你是在尋找純粹的編碼解決方案,或者第三方應用程序可以做到這一點嗎? – Chucky

+0

在這種情況下,這聽起來很有前途http://www.activity-logger.com/features-android.html – Chucky

+0

我是否需要將它安裝在我的應用程序正在運行的Android設備上? –

回答

-3

這是獲得在應用程序中運行的所有活動的方式 -

try { 
    ActivityInfo[] list = getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_ACTIVITIES).activities; 

     for(int i = 0;i< list.length;i++) 
     { 
      System.out.println("List of running activities"+list[i].name); 

     } 
    } 

    catch (NameNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
+6

這似乎列出當前正在運行的應用程序中的所有活動,而不是設備上的 –

+12

這列出了運行時應用程序清單中的所有活動,而不僅僅是所有正在運行的活動。 –

+1

由於Doc說:下包含的所有標籤的數組,或者如果沒有,則爲空。只有在設置了標誌GET_ACTIVITIES時纔會填充此內容。 – Kitesurfer

0

我發現AppLifecycleHandler在this post記錄成爲知道發生了什麼很好的解決方案。我主要使用它來保持計數並在用戶完成使用應用程序時進行清理,但是您可以使用數組在其中存儲所有正在運行的活動,以便始終可以調用以查明正在運行的內容。

相關問題