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程序设计有所帮助。
上一篇: 栈--用简单数组实现(Java)