当前位置: 代码迷 >> Android >> 【Android】取得已安装应用
  详细解决方案

【Android】取得已安装应用

热度:52   发布时间:2016-05-01 19:13:40.0
【Android】获得已安装应用

步骤

  1. 获得上下文Context,调用getPackageManager()获得PackageManager实例
  2. 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() {		@Override		public 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;    	}		@Override		public int getCount() {			return data.size();		}		@Override		public Object getItem(int position) {			return data.get(position);		}		@Override		public long getItemId(int position) {			return position;		}		@Override		public 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 {    			@Override		public 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;    	}    }}
?

运行结果:

?

  相关解决方案