7

最近実行中のアプリケーション(プロセスではない)のリストを取得するために多くのことを試みましたが、取得できませんでした。

これに関するすべてのスタックオーバーフローの質問を調べましたが、ホームボタンを長押しするとSamsung Mobileタスクマネージャーで確認できるようなアプリケーション固有ではなく、実行中のプロセスと最近のタスクについて得た唯一の答え.

このコードで実行中のプロセスを取得できます:

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();

for(RunningAppProcessInfo runningProInfo:procInfos){

        Log.d("Running Processes", "()()"+runningProInfo.processName);
}

すべてのプロセスのパッケージ名を指定していますが、起動したアプリケーションのパッケージ名のみが必要です(最近と実行中の両方)。

アプリケーションプロセスの実行からそれを抽出するにはどうすればよいですか?

4

3 に答える 3

3

更新: 以下の解決策を使用しても、最近のタスクの名前を取得する方法はわかりませんが、これは現在実行中の凍結されたタスクで機能します: getRunningTasks

Usingは、 を呼び出してパッケージ名を取得するために使用できるベースを含むgetRunningTasksリストを返します。RunningTaskInfoComponentNamegetPackageName()

元の答え:

getRecentTasksを調べる必要があります。その機能は次のように説明されています

ユーザーが最近起動したタスクのリストを返します。最新のものを最初に、古いものを順に並べて返します。

注: このメソッドは、タスク管理ユーザー インターフェイスのデバッグと表示のみを目的としています。

これにより、最近実行した、または実行中のすべてのアプリのリストが表示されます。

于 2012-09-11T19:41:35.073 に答える
1

最近は、RecentTaskInfoを返すgetRecentTasksから取得できます。

于 2012-09-11T19:42:07.677 に答える
0

API レベル < 21 の場合

この権限が必要です:

<uses-permission android:name="android.permission.GET_TASKS" />

そして、このコード:

ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTasks = activityManager.getRecentTasks(10, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
for (ActivityManager.RecentTaskInfo recentTask : recentTasks) {
    try {
        String packageName = recentTask.baseIntent.getComponent().getPackageName();
        ApplicationInfo appInfo = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_META_DATA);
        String label = getPackageManager().getApplicationLabel(appInfo).toString();
        Log.i("APPS", label);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}
于 2016-03-03T14:51:31.533 に答える