首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

【Android】取得已安装应用

2012-07-01 
【Android】获得已安装应用步骤获得上下文Context,调用getPackageManager()获得PackageManager实例PackageMa

【Android】获得已安装应用

步骤

    获得上下文Context,调用getPackageManager()获得PackageManager实例PackageManager实例,调用getInstalledPackages(int flag)并传入flag值获得相应已安装包信息PackageInfo列表

示例代码:

?

package dyingbleed.iteye;import java.util.ArrayList;import java.util.List;import android.app.ListActivity;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class Main extends ListActivity {private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);int what = msg.what;switch(what) {case 0 :List<APP> data = (List<APP>) msg.obj;setListAdapter(new APPListViewAdapter(Main.this, data));break;}}};    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                new Thread(new InstalledAPPTask()).start();    }        private class APPListViewAdapter extends BaseAdapter {        private Context context;    private List<APP> data;        public APPListViewAdapter(Context context, List<APP> data) {    this.context = context;    this.data = data;    }@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if(convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.item, null);}ImageView icon = (ImageView) convertView.findViewById(R.id.item_IconImageView);TextView name = (TextView) convertView.findViewById(R.id.item_NameTextView);TextView packageName = (TextView) convertView.findViewById(R.id.item_PackageNameTextView);TextView versionName = (TextView) convertView.findViewById(R.id.item_VersionNameTextView);icon.setImageDrawable(data.get(position).getIcon());name.setText(data.get(position).getName());packageName.setText(data.get(position).getPackageName());versionName.setText(data.get(position).getVersionName());return convertView;}        }        private class InstalledAPPTask implements Runnable {    @Overridepublic void run() {List<APP> appList = achieveAPPList();handler.sendMessage(handler.obtainMessage(0, appList));}private List<APP> achieveAPPList() {List<APP> result = new ArrayList<APP>();List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0); //返回已安装的包信息列表for(PackageInfo packageInfo : packageInfoList) {/* * 判断是否为非系统应用 * */if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) {APP app = new APP();app.setIcon(packageInfo.applicationInfo.loadIcon(getPackageManager()));app.setName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());app.setPackageName(packageInfo.packageName);app.setVersionName(packageInfo.versionName);result.add(app);}}return result;}}        private class APP {        private String name; //应用名    private String packageName; //包名    private String versionName; //版本名    private Drawable icon; //应用图标        public String getName() {    return name;    }        public void setName(String name) {    this.name = name;    }        public String getPackageName() {    return packageName;    }        public void setPackageName(String packageName) {    this.packageName = packageName;    }        public String getVersionName() {    return versionName;    }        public void setVersionName(String versionName) {    this.versionName = versionName;    }        public Drawable getIcon() {    return icon;    }        public void setIcon(Drawable icon) {    this.icon = icon;    }    }}
?

运行结果:

?

【Android】取得已安装应用

热点排行