在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;
		}

	}

这样就完成了相应的工作。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

Sunraych

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值