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

	}

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

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

时间: 2025-01-02 13:44:20

在Android手机上获取其他应用的包名及版本号的相关文章

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

获取Android手机上其他应用的包名及版本号方法有很多,可以通过AAPT从APK包中直接获取,也可以通过代码在手机上获取.显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便. 下面我们来看下如何在手机上获取其他应用的包名.版本号. 核心:通过PackageManager可以获取到我们想要的信息,例如:程序图标.程序名称.包名.VersionName.VersionCode等. /* * @Author Sun Ruichuan * * */ public ArrayList<Has

Android 手机上获取物理唯一标识码

唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure;private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 我们在项目过程中或多或少会使用到设备的唯一识别码,我们希望能够得到一个稳定.可靠的设备唯一识别码.今天我们将介绍几种方式. 1. DEVICE_ID 假

Android手机上获取物理唯一标识码

最近在做项目的过程中需要唯一标识用户的设备,后台在做push notification的时候需要用到这个唯一的标识号. 首先我会想到的是设备的device id,毫无疑问可以唯一标识设备,第一个版本也正是这样做的.国庆期间用户的一封邮件让哥很不淡定,因为需要拿到device id,所以必然要在AndroidManifest文件中添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

MingQQ Android版发布了,可以在Android手机上登录你的QQ,收发消息哦...

最近为了学习Android开发,特意将原来写的MingQQ Windows版移植到了Android上面,以此练手.通过这次练习,学习到了不少Android开发的相关知识,特别是界面开发部分. MingQQ的界面模仿了Android QQ的基本功能,虽然体验性完全比不上QQ,但目前技术有限,只能做到现在这水平了,更好的界面用户体验留待以后再提升吧. 下拉刷新目前使用了第三方开源库Android-PullToRefresh,以后再考虑替换成自己写的下拉刷新组件,并增加消息列表的右滑删除功能. 发布的

Android手机如何获取power_profile.xml文件

最近在做关于能耗方面的测试,看了一个月时间的论文,终于找到了一些新的思路,但是一个问题出现了,以至于 工作无法再进行下去. 在Android手机中,对于手机中的每个部件(cpu.led.gps.3g等等)运行时对应的能耗值都放power_profile.xml 文件中,而且系统的 设置-->电池-->使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数 的.Android手机如何获取power_profile.xml文件呢?接下来我们会详细介绍该问题

android 手机上运行图像算法

在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然后将你的code放到jni文件中,编写android.mk,之后利cgywin编译生成.so供android调用 3.之后把你的java code编译成apk,然后pull到手机中就可以看到结果了. 总的来说,如果没有做优化的话,直接在手机跑pc上的code,结果一般都是惨不忍睹,一般需要针对算法做

在 Android 手机上使用 Terminal IDE 远程登录你的 Mac/Ubuntu

我的主力博客:半亩方塘 以下内容系原创,转载请务必注明地址 在 Android 手机上使用 Terminal IDE 远程登录你的 Mac 可以让你随时随地远程对你的 Mac 进行操作,这个很爽,特别是当你躺在床上还能操作你在某个地方开着的 Mac 计算机的时候,其实依照这种方法也可以类似地远程登录Ubuntu,有兴趣的可以试试,简单几步就可以实现了: 首先,需要下载 Terminal IDE,废话不说,请 google 下载之,下载完成后将 Terminal IDE 装到你的安卓手机上, In

如何通过wifi在android手机上安装调试应用

如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpip模式.正确的回显信息是:“restarting in TCP mode port: 5555”.5555可以是任何未占用的端口号.3. 再执行“adb connect <手机的WLAN IP>:5555”,连接到手机.正确的回显信息是:“connected to <手机的WLAN IP&g

cocos2dx 遮罩层 android 手机上 失败

1.CCClippingNode使用(在模拟器上ok,在手机上不行),实现多个剪切区域 local layer=CCLayerColor:create(ccc4(0,0,0,110)) --/*创建剪裁节点*/ local pClip=CCClippingNode:create() pClip:setInverted(true)--;//设置是否反向,将决定画出来的圆是透明的还是黑色的 pClip:setAlphaThreshold(0.0) self:addChild(pClip) --/*注