最近想做一个任务管理器练一练手,第一道题就是获取手机中正在运行的程序。后来在网上找了一下资料,终于有了眉目。废话不多说!看代码。
ActivityMain.java
view plaincopy to clipboardprint?
01.public class ActivityMain extends ListActivity {
02. @Override
03. public void onCreate(Bundle savedInstanceState) {
04. super.onCreate(savedInstanceState);
05. requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
06.
07. List list = getRunningProcess();
08. ListAdapter adapter = new ListAdapter(list,this);
09. getListView().setAdapter(adapter);
10. }
11.
12. //正在运行的
13. public List getRunningProcess(){
14. PackagesInfo pi = new PackagesInfo(this);
15.
16. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
17. //获取正在运行的应用
18. List run = am.getRunningAppProcesses();
19. //获取包管理器,在这里主要通过包名获取程序的图标和程序名
20. PackageManager pm =this.getPackageManager();
21. List list = new ArrayList();
22.
23. for(RunningAppProcessInfo ra : run){
24. //这里主要是过滤系统的应用和电话应用,当然你也可以把它注释掉。
25. if(ra.processName.equals("system") || ra.processName.equals("com.android.phone")){
26. continue;
27. }
28.
29. Programe pr = new Programe();
30. pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));
31. pr.setName(pi.getInfo(ra.processName).loadLabel(pm).toString());
32. System.out.println(pi.getInfo(ra.processName).loadLabel(pm).toString());
33. list.add(pr);
34. }
35. return list;
36. }
37.
38.}
public class ActivityMain extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
List list = getRunningProcess();
ListAdapter adapter = new ListAdapter(list,this);
getListView().setAdapter(adapter);