擷取android中正在運行應用程式的列表

來源:互聯網
上載者:User

  最近想做一個工作管理員練一練手,第一道題就是擷取手機中正在啟動並執行程式。後來在網上找了一下資料,終於有了眉目。廢話不多說!看代碼。

 

ActivityMain.java

public class ActivityMain extends ListActivity {<br />@Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);</p><p> List<Programe> list = getRunningProcess();<br /> ListAdapter adapter = new ListAdapter(list,this);<br /> getListView().setAdapter(adapter);<br /> }</p><p>//正在啟動並執行<br />public List<Programe> getRunningProcess(){<br />PackagesInfo pi = new PackagesInfo(this);</p><p>ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);<br />//擷取正在啟動並執行應用<br />List<RunningAppProcessInfo> run = am.getRunningAppProcesses();<br />//擷取包管理器,在這裡主要通過包名擷取程式的表徵圖和程式名<br />PackageManager pm =this.getPackageManager();<br />List<Programe> list = new ArrayList<Programe>();</p><p>for(RunningAppProcessInfo ra : run){<br />//這裡主要是過濾系統的應用和電話應用,當然你也可以把它注釋掉。<br />if(ra.processName.equals("system") || ra.processName.equals("com.android.phone")){<br />continue;<br />}</p><p>Programe pr = new Programe();<br />pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));<br />pr.setName(pi.getInfo(ra.processName).loadLabel(pm).toString());<br />System.out.println(pi.getInfo(ra.processName).loadLabel(pm).toString());<br />list.add(pr);<br />}<br />return list;<br />}</p><p>} 

 

ListAdapter.java

public class ListAdapter extends BaseAdapter {<br />List<Programe> list = new ArrayList<Programe>();<br />LayoutInflater la;<br />Context context;</p><p>public ListAdapter(List<Programe> list ,Context context){<br />this.list = list;<br />this.context = context;<br />}</p><p>@Override<br />public int getCount() {<br />// TODO Auto-generated method stub<br />return list.size();<br />}<br />@Override<br />public Object getItem(int position) {<br />// TODO Auto-generated method stub<br />return list.get(position);<br />}<br />@Override<br />public long getItemId(int position) {<br />// TODO Auto-generated method stub<br />return position;<br />}<br />@Override<br />public View getView(int position, View convertView, ViewGroup parent) {<br />ViewHolder holder;<br />if(convertView == null)<br />{<br />la = LayoutInflater.from(context);<br />convertView=la.inflate(R.layout.list_item, null);</p><p>holder = new ViewHolder();<br />holder.imgage=(ImageView) convertView.findViewById(R.id.image);<br />holder.text = (TextView) convertView.findViewById(R.id.text);</p><p>convertView.setTag(holder);<br />}else{<br />holder = (ViewHolder) convertView.getTag();<br />}<br /> final Programe pr = (Programe)list.get(position);<br />//設定表徵圖<br />holder.imgage.setImageDrawable(pr.getIcon());<br />//設定程式名<br />holder.text.setText(pr.getName());</p><p>return convertView;<br />}<br />}<br />class ViewHolder{<br /> TextView text;<br />ImageView imgage;<br />} 

 

PackagesInfo.java

public class PackagesInfo {<br />private List<ApplicationInfo> appList;</p><p>public PackagesInfo(Context context){<br />//通包管理器,檢索所有的應用程式(甚至卸載的)與資料目錄<br />PackageManager pm = context.getApplicationContext().getPackageManager();<br />appList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);<br />}</p><p>/**<br /> * 通過一個程式名返回該程式的一個Application對象。<br /> * @param name程式名<br /> * @returnApplicationInfo<br /> */</p><p>public ApplicationInfo getInfo(String name){<br />if(name == null){<br />return null;<br />}<br />for(ApplicationInfo appinfo : appList){<br />if(name.equals(appinfo.processName)){<br />return appinfo;<br />}<br />}<br />return null;<br />}</p><p>}<br /> 

Programe.java

 

public class Programe {<br />//表徵圖<br />private Drawable icon;<br />//程式名<br />private String name;</p><p>public Drawable getIcon() {<br />return icon;<br />}<br />public void setIcon(Drawable icon) {<br />this.icon = icon;<br />}<br />public String getName() {<br />return name;<br />}<br />public void setName(String name) {<br />this.name = name;<br />}</p><p>} 

 

list_item.xml

<?xml version="1.0" encoding="UTF-8"?><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:orientation="horizontal"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> ><br /> <ImageView<br /> android:id="@+id/image"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> android:layout_marginRight="10dip"<br /> /><br /> <TextView<br /> android:id="@+id/text"<br /> android:layout_width="wrap_content"<br /> android:layout_height="wrap_content"<br /> /></p><p> </LinearLayout> 

 

效果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.