获取正在运行的任务的Android类别信息

时间:2012-01-17 20:22:30

标签: android android-activity task categories

在Android中,我可以使用tis:

等代码获取正在运行的任务和活动
(ActivityManager.RunningTaskInfo) this.mActivityManager.getRunningTasks()

然后我可以获得包名,类名等。

我的问题是,是否有办法从中获取“类别”信息?或者任何人都可以建议替代方案?例如,当我启动应用程序时,类别为

cat=[android.intent.category.LAUNCHER] 

3 个答案:

答案 0 :(得分:1)

我不确定你的意思,但也许你想要的是:通过调用getIntent()检索活动中的意图,并在Intent对象上调用方法getCategories()。此方法将返回带有类别字符串的集合。

答案 1 :(得分:0)

我不确定,这是否可以解决您的问题,但您可以使用ActivityManager's getRecentTasks(int, int) API获取有关最近任务的信息。它返回ActivityManager.RecentTaskInfo个对象的列表,其中包含有关用于启动任务的意图的信息。您还可以使用RecentTaskInfo.id字段将任务映射到正在运行的任务。

答案 2 :(得分:0)

我发现没有直接的做法,但这可能会有所帮助:

Intent ApplicationIntent = new Intent(Intent.ACTION_MAIN);
ApplicationIntent.addCategory(Intent.CATEGORY_LAUNCHER);  

List<ResolveInfo> LauncherResolves = packageManager.queryIntentActivities(ApplicationIntent, 0);

List<String> AppsList = new ArrayList<String>();

for (int i = 0; i < LauncherResolves.size(); i++)
    AppsList.add(LauncherResolves.get(i).activityInfo.name);

List<RunningTaskInfo> runningAppInfo = activityManager.getRunningTasks(10);
for (int i = 0; i < runningAppInfo.size(); i++)
{
    if (AppsList.contains(runningAppInfo.get(i).topActivity.getClassName()))
    {
        // Do what ever you want
    }
}