整理PackageManager,获取所有安装程序信息

这篇博客介绍了如何在Android中使用PackageManager获取已安装应用的版本信息,并展示了检查指定包是否存在以及安装APK的方法。通过getInstalledPackages()方法可以获取所有安装程序的详细信息,包括versionCode和versionName。同时,文章还提供了检查当前应用包名是否存在以及启动安装流程的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);//获取安装程序的包名
  
  
  for (int i = 0; i < packs.size(); i++) {
   PackageInfo p = packs.get(i);//某个包信息
   

  //打印:版本好,版本名,包名....
  Log.i("", "-------" + p.versionCode + "-------" + p.versionName + "--------" 
    + p.packageName + "-------" + p.applicationInfo);

}

 

 

versionCode, versionName 的值来源AndroidManifest.xml文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.testapk"
      android:versionCode="2" // p.versionCode 
      android:versionName="Version1" //  p.versionName

>

 

在代码中获取当前应用程序的versionCode,versionName

int versionCode = 0;
  try {
   versionCode = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
  } catch (NameNotFoundException e) {
   e.printStackTrace();
  }

 

代码:

 // 通过检测包名,判断APK是否安装
 private boolean checkPackageExist(boolean getSysPackages) {
  boolean packageExist = false;

  int versionCode = 0;
  try {
   versionCode = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
  } catch (NameNotFoundException e) {
   e.printStackTrace();
  }
  
  Log.i("", "-------" + this.getPackageName() + "-------" + versionCode);//获取当前包名
  
  List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
  
  
  for (int i = 0; i < packs.size(); i++) {
   PackageInfo p = packs.get(i);
   
   Log.i("", "-------" + p.versionCode + "-------" + p.versionName + "--------"
     + p.packageName + "-------" + p.applicationInfo);
   if ((!getSysPackages) && (p.versionName == null)) {
    continue;
   }
   if (p.packageName.equalsIgnoreCase(PACKAGENAME)) {
    packageExist = true;
    break;
   }
  }

  return packageExist;
 }

 

//安装APK

 private void installApk() {
  if (checkFileExist(fileRoot + fileName)) {

   Intent intent = new Intent();
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.setAction(android.content.Intent.ACTION_VIEW);
   String type = "application/vnd.android.package-archive";
   intent.setDataAndType(Uri.parse("file://" + fileRoot + fileName),
     type);
   startActivity(intent);
  } else {
   downloadapk();
  }
 }

 

 

通过以上代码,再加上一些网路下载的代码,就可以做一个简体的应用市场了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值