[转]获取Android中正在运行应用程序的列表

本文转自:http://www.linuxidc.com/Linux/2011-09/42287.htm

最近想做一个任务管理器练一练手,第一道题就是获取手机中正在运行的程序。后来在网上找了一下资料,终于有了眉目。废话不多说!看代码。

ActivityMain.java

1.public class ActivityMain extends ListActivity { 
2.    @Override 
3.    public void onCreateBundle savedInstanceState) { 
4.        super.onCreatesavedInstanceState); 
5.        requestWindowFeatureWindow.FEATURE_INDETERMINATE_PROGRESS); 
6.        
7.       List<Programe> list = getRunningProcess); 
8.       ListAdapter adapter = new ListAdapterlist,this); 
9.       getListView).setAdapteradapter); 
10.    } 
11.     
12.    //正在运行的 
13.    public List<Programe> getRunningProcess){ 
14.        PackagesInfo pi = new PackagesInfothis); 
15.         
16.        ActivityManager am = ActivityManager) getSystemServiceACTIVITY_SERVICE); 
17.        //获取正在运行的应用 
18.        List<RunningAppProcessInfo> run = am.getRunningAppProcesses); 
19.        //获取包管理器,在这里主要通过包名获取程序的图标和程序名 
20.        PackageManager pm =this.getPackageManager); 
21.        List<Programe> list = new ArrayList<Programe>);     
22.         
23.        forRunningAppProcessInfo ra : run){ 
24.            //这里主要是过滤系统的应用和电话应用,当然你也可以把它注释掉。 
25.            ifra.processName.equals”system”) || ra.processName.equals”com.Android.phone”)){ 
26.                continue; 
27.            } 
28.             
29.            Programe  pr = new Programe); 
30.            pr.setIconpi.getInfora.processName).loadIconpm)); 
31.            pr.setNamepi.getInfora.processName).loadLabelpm).toString)); 
32.            System.out.printlnpi.getInfora.processName).loadLabelpm).toString)); 
33.            list.addpr); 
34.        } 
35.        return list; 
36.    } 
37.     
38.}  

ListAdapter.java

1.public class ListAdapter extends BaseAdapter { 
2.    List<Programe> list = new ArrayList<Programe>); 
3.    LayoutInflater la; 
4.    Context context; 
5.     
6.    public ListAdapterList<Programe> list ,Context context){ 
7.        this.list = list; 
8.        this.context = context; 
9.    } 
10.     
11.    @Override 
12.    public int getCount) { 
13.        // TODO Auto-generated method stub 
14.        return list.size); 
15.    } 
16.    @Override 
17.    public Object getItemint position) { 
18.        // TODO Auto-generated method stub 
19.        return list.getposition); 
20.    } 
21.    @Override 
22.    public long getItemIdint position) { 
23.        // TODO Auto-generated method stub 
24.        return position; 
25.    } 
26.    @Override 
27.    public View getViewint position, View convertView, ViewGroup parent) { 
28.        ViewHolder holder; 
29.        ifconvertView == null) 
30.        {   
31.            la = LayoutInflater.fromcontext); 
32.            convertView=la.inflateR.layout.list_item, null); 
33.             
34.            holder = new ViewHolder); 
35.            holder.imgage=ImageView) convertView.findViewByIdR.id.image); 
36.            holder.text = TextView) convertView.findViewByIdR.id.text); 
37.             
38.            convertView.setTagholder); 
39.        }else{ 
40.            holder = ViewHolder) convertView.getTag); 
41.        } 
42.         final Programe pr = Programe)list.getposition); 
43.        //设置图标 
44.        holder.imgage.setImageDrawablepr.getIcon)); 
45.        //设置程序名 
46.        holder.text.setTextpr.getName)); 
47.         
48.        return convertView; 
49.    } 
50.} 
51.class ViewHolder{ 
52.     TextView text; 
53.    ImageView imgage; 
54.}  
 
PackagesInfo.java

1.public class PackagesInfo { 
2.    private List<ApplicationInfo> appList; 
3.     
4.    public PackagesInfoContext context){ 
5.        //通包管理器,检索所有的应用程序(甚至卸载的)与数据目录 
6.        PackageManager pm = context.getApplicationContext).getPackageManager); 
7.        appList = pm.getInstalledApplicationsPackageManager.GET_UNINSTALLED_PACKAGES); 
8.    } 
9.     
10.     
11.     
12.    /**
13.     * 通过一个程序名返回该程序的一个Application对象。
14.     * @param name  程序名
15.     * @return  ApplicationInfo
16.     */ 
17.     
18.    public ApplicationInfo getInfoString name){ 
19.        ifname == null){ 
20.            return null; 
21.        } 
22.        forApplicationInfo appinfo : appList){ 
23.            ifname.equalsappinfo.processName)){ 
24.                return appinfo; 
25.            } 
26.        } 
27.        return null; 
28.    } 
29.     
30.}  
  

Programe.java

1.public class Programe { 
2.    //图标 
3.    private Drawable icon;   
4.    //程序名 
5.    private String name; 
6.     
7.    public Drawable getIcon) { 
8.        return icon; 
9.    } 
10.    public void setIconDrawable icon) { 
11.        this.icon = icon; 
12.    } 
13.    public String getName) { 
14.        return name; 
15.    } 
16.    public void setNameString name) { 
17.        this.name = name; 
18.    } 
19.     
20.}  
 
list_item.xml

1.<?xml version=”1.0″ encoding=”UTF-8″?> 
2.<LinearLayout xmlns:Android=”http://schemas.android.com/apk/res/android” 
3.    android:orientation=”horizontal” 
4.    Android:layout_width=”wrap_content” 
5.    android:layout_height=”wrap_content” 
6.   > 
7.    <ImageView 
8.        Android:id=”@+id/image” 
9.        android:layout_width=”wrap_content” 
10.        Android:layout_height=”wrap_content” 
11.        android:layout_marginRight=”10dip” 
12.    />  
13.  <TextView 
14.    Android:id=”@+id/text” 
15.    android:layout_width=”wrap_content” 
16.    Android:layout_height=”wrap_content” 
17.  /> 
18.    
19.   </LinearLayout>  
 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平