-1

最近のタスクリストを取得したいと思います。

次のコードを使用しますが、origActivity 情報を取得しようとすると、origActivity は常に null です。

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

リストの全アクティビティのアプリケーションラベル、パッケージ名、アクティビティ名を知りたいです。

これらの要素を知る唯一の方法は、RecentTaskInfo から origActivity を使用することですが、常に null です (NullPOinterException が発生します)。

取得できる唯一の情報はアクティビティ ID です。

最近のすべてのタスクのアプリケーション ラベル、パッケージ名、アクティビティ名を知る方法はありますか?

4

3 に答える 3

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))
于 2014-04-17T09:11:11.540 に答える
-1

この許可を保持する必要があります
GET_TASKS

于 2014-02-09T19:10:59.087 に答える
-1

このコードを使用して、アクティビティマネージャーを初期化しました

     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);
}
于 2012-12-16T21:19:10.047 に答える