実行中のアプリケーションの一覧を取得する

Androidで実行中のアプリケーションの一覧を取得するには、まずgetSystemServiceメソッドでACTIVITY_SERVICEを指定してActivityManagerを取得する。得られたActivityManagerのgetRunningAppProcessesメソッドで実行中のプロセスの一覧を取得し、得られたプロセス名からApplicationInfoを取得してアプリケーションのラベルを取得するという流れになる。

getRunningAppProcessesメソッドからはActivityManager.RunningAppProcessInfoのListが得られるので、それのprocessNameプロパティの値を渡してPackageManager.getApplicationInfoメソッドでApplicationInfoを取得する。このとき、processNameから該当するApplicationInfoが得られない場合にはNameNotFoundExceptionがスローされる。

ApplicationInfoを取得できたらloadLabelメソッドでアプリケーション名(AndroidManifest.xmlのapplicationタグのlabel属性)を取得する。

                ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
                PackageManager pm = getPackageManager();
                List<ActivityManager.RunningAppProcessInfo> pl = am.getRunningAppProcesses();
                for(ActivityManager.RunningAppProcessInfo appInfo : pl) {
                    try {
                        ApplicationInfo ai;
                        ai = pm.getApplicationInfo(appInfo.processName, 0);
                        Log.d("onClick", "label = " + ai.loadLabel(pm));
                        //Log.d("onClick", "label = " + pm.getApplicationLabel(ai));
                    } catch (NameNotFoundException e) {
                        // TODO Auto-generated catch block

                    }
                    
                }

ラベルの取得は、loadLabelメソッドの代わりにPackageManager.getApplicationLabelメソッドを用いても同じ結果が得られる。このアプリケーション一覧はAndroid端末の[設定]-[アプリ(ケーション)]-[アプリケーション管理]の実行中タブの結果とは多少異なる。原因はAndroidでいう”アプリケーション”と”プロセス”が必ずしも1対1でない事等による。

(2012/03/05)

新着情報
【オープンソースソフトウェア環境構築】Apple silicon Macで開発環境を構築
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する

Copyright(C) 2004-2013 モバイル開発系(K) All rights reserved.
[Home]