実行中のアプリケーションの一覧を取得する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]
|