引用:http://www.eoeandroid.com/thread-21948-1-1.html
程序代码部分:
- public class ApplicatonList extends Activity {
- private List<Map<String, Object>> data;
- Map<String, Object> item;
- private ListView listView = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- listView = new ListView(this);
- data = new ArrayList<Map<String, Object>>();
- listPackages();
- SimpleAdapter adapter = new SimpleAdapter(this, data,
- android.R.layout.simple_list_item_2, new String[] {"appname","pname" }, new int[] {
- android.R.id.text1, android.R.id.text2, });
- listView.setAdapter(adapter);
- setContentView(listView);
- }
- class PInfo {
- private String appname = "";
- private String pname = "";
- private String versionName = "";
- private int versionCode = 0;
- private Drawable icon;
- private void prettyPrint() {
- Log.i("taskmanger",appname + "\t" + pname + "\t" + versionName + "\t" + versionCode + "\t");
- }
- }
- private void listPackages() {
- ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */
- final int max = apps.size();
- for (int i=0; i<max; i++) {
- apps.get(i).prettyPrint();
- item = new HashMap<String, Object>();
- item.put("appname", apps.get(i).appname);
- item.put("pname", apps.get(i).pname);
- data.add(item);
- }
- }
- private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
- ArrayList<PInfo> res = new ArrayList<PInfo>();
- List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
- for(int i=0;i<packs.size();i++) {
- PackageInfo p = packs.get(i);
- if ((!getSysPackages) && (p.versionName == null)) {
- continue ;
- }
- PInfo newInfo = new PInfo();
- newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
- newInfo.pname = p.packageName;
- newInfo.versionName = p.versionName;
- newInfo.versionCode = p.versionCode;
- newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
- res.add(newInfo);
- }
- return res;
- }
- }