欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现整理PackageManager获取所有安装程序信息

程序员文章站 2024-02-17 10:10:40
本文实例讲述了android实现整理packagemanager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下: list

本文实例讲述了android实现整理packagemanager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下:

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();
 }
}

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

希望本文所述对大家android程序设计有所帮助。