【问题标题】:Android: How to get recent tasks list and origActivity?Android:如何获取最近的任务列表和 origActivity?
【发布时间】:2012-12-16 21:04:41
【问题描述】:

我想获取最近的任务列表。

我使用以下代码,但是当我尝试获取 origActivity 信息时,origActivity 始终为空:

ActivityManager activityManager = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(8,0);

我想知道列表中所有活动的应用标签、包名和活动名。

了解这些元素的唯一方法是使用 RecentTaskInfo 中的 origActivity,但它始终为 null(我得到 NullPOinterException)。

我能得到的唯一信息是活动 ID。

有没有办法知道最近所有任务的应用标签、包名和活动名?

【问题讨论】:

标签: android task activity-manager


【解决方案1】:

要获取所有包名和类名,请使用基本意图变量。下面的例子取自 AdapterView 的 getView() 函数。

final ActivityManager.RecentTaskInfo temp = this.getItem(position); 
final String packagename = temp.baseIntent.getComponent().getPackageName();
final String label = getPackageManager().getApplicationLabel(getPackageManager().getApplicationInfo(packagename, PackageManager.GET_META_DATA))

【讨论】:

    【解决方案2】:

    我用这段代码来初始化活动管理器

         activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    

    你为什么不使用

            List<RunningAppProcessInfo> rpinfo= activityManager.getRunningAppProcesses();
    

    从这里你可以得到你想要的所有信息 并且列表根据最近的任务进行排序。表示最近使用的任务在顶部 对你来说,你可以获得尽可能多的近期任务
    并获取应用标签

    PackageManager pm=getApplicationContext().getPackageManager();  
    ApplicationInfo ai;
    
    try {
        ai=pm.getApplicationInfo(processName, 0);
        name=(String) pm.getApplicationLabel(ai);
    }
    

    【讨论】:

    • 非常感谢您的回答。我知道 getRunningTasks,但我想要最近的任务而不是正在运行的任务。
    • “并且列表是根据最近的任务排序的”不幸的是,这不是真的。如 API 中所述,未指定排序,并且很多设备不会对列表进行排序,最近的在顶部。
    【解决方案3】:

    您必须持有此权限
    GET_TASKS

    【讨论】:

    • OP 已经获得了活动 ID,我假设他/她已经拥有权限。
    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多