|
|||||
実行中のアプリケーションの一覧を取得する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)
Copyright(C) 2004-2013 モバイル開発系(K) All rights reserved.
[Home]
|
|||||