在Android手机上获取其它应用的包名及版本

转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661


获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAPT从APK包中直接获取。也能够通过代码在手机上获取。显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便。


以下我们来看下怎样在手机上获取其它应用的包名、版本。

核心:通过PackageManager能够获取到我们想要的信息,比如:程序图标、程序名称、包名、VersionName、VersionCode等。

	/*
	 * @Author Sun Ruichuan
	 * 
	 * */
	
	public ArrayList<HashMap<String, Object>> getItems(Context context) {

		PackageManager pckMan = context.getPackageManager();
		ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>();

		List<PackageInfo> packageInfo = pckMan.getInstalledPackages(0);

		for (PackageInfo pInfo : packageInfo) {

			HashMap<String, Object> item = new HashMap<String, Object>();

			item.put("appimage", pInfo.applicationInfo.loadIcon(pckMan));
			item.put("packageName", pInfo.packageName);
			item.put("versionCode", pInfo.versionCode);
			item.put("versionName", pInfo.versionName);
			item.put("appName", pInfo.applicationInfo.loadLabel(pckMan).toString());

			items.add(item);

		}

		return items;
	}


在获取到所须要的信息后就可以将这些信息放入到自己定义的ListAdaptar里。

class MyAdapter extends BaseAdapter {

		public class Holder {
			TextView tv_pakagename;
			TextView tv_versioncode;
			TextView tv_versionname;
			TextView tv_appname;
			ImageView iv_logo;
		}

		@Override
		public int getCount() {
			return allProcess.size();
		}

		@Override
		public HashMap<String, Object> getItem(int position) {
			return allProcess.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {

			Holder holder;
			View v;

			if (convertView == null) {
				holder = new Holder();
				v = LayoutInflater.from(getApplicationContext()).inflate(
						R.layout.list_menu, null);

				holder.tv_pakagename = (TextView) v
						.findViewById(R.id.tv_pakagename);
				holder.tv_versioncode = (TextView) v
						.findViewById(R.id.tv_versioncode);
				holder.tv_versionname = (TextView) v
						.findViewById(R.id.tv_versionname);
				holder.iv_logo = (ImageView) v.findViewById(R.id.iv_logo);
				holder.tv_appname = (TextView) v.findViewById(R.id.tv_appname);
				v.setTag(holder);
			} else {
				v = convertView;
				holder = (Holder) v.getTag();
			}

			holder.tv_pakagename.setText("包名:"
					+ allProcess.get(position).get("packageName").toString());
			holder.tv_versioncode.setText("VersionCode:"
					+ allProcess.get(position).get("versionCode").toString());
			holder.tv_versionname.setText("VersionName:"
					+ allProcess.get(position).get("versionName").toString());
			holder.iv_logo.setImageDrawable((Drawable) allProcess.get(position)
					.get("appimage"));
			holder.tv_appname.setText("App名称:"
					+ allProcess.get(position).get("appName").toString());

			return v;
		}

	}

这样就完毕了对应的工作。

原文地址:https://www.cnblogs.com/zfyouxi/p/5150828.html