PackageInfo、ApplicationInfo、ActivityInfo:
PackageManager manager = this.getPackageManager();
//获取所有的包信息(包括安装未使用着的,和未卸载干净的)
List<PackageInfo> packageInfos = manager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
| PackageManager.GET_ACTIVITIES);
for (PackageInfo pinfo : packageInfos) {
// System.out.println(pinfo.packageName+" " + pinfo.versionCode+" "+pinfo.versionName);
//获取应用名称
String name = (String) pinfo.applicationInfo.loadLabel(manager);
System.out.println("name = " + name);
if ("拨号".equals(name)) {
//获取应用图标
Drawable drawable = pinfo.applicationInfo.loadIcon(manager);
imgv.setImageDrawable(drawable);
//获取ActivityInfo数组
ActivityInfo[] activityInfos = pinfo.activities;
//首先进行非空判断
// 获得启动ActivityInfo
if (activityInfos != null && activityInfos.length > 0) {
ActivityInfo start = activityInfos[0];
// 获得启动拨号程序
Intent intent = new Intent();
intent.setClassName(pinfo.packageName, start.name);
startActivity(intent);
}
}
}
系统应用包名,版本号,版本名:
应用名称:
区分系统应用和用户应用:
PackageManager manager = this.getPackageManager();
//获取所有的包信息(包括安装未使用着的,和未卸载干净的)
List<PackageInfo> packageInfos = manager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
| PackageManager.GET_ACTIVITIES);
for (PackageInfo pinfo : packageInfos) {
// System.out.println(pinfo.packageName+" " + pinfo.versionCode+" "+pinfo.versionName);
//获取系统应用
if (((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)) != 0) {
System.out.println(pinfo.applicationInfo.loadLabel(manager));
}else
//升级过的系统应用
if ((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
System.out.println(pinfo.applicationInfo.loadLabel(manager));
}else{
if (((pinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)) == 0) {
Log.e("test", (String) pinfo.applicationInfo.loadLabel(manager));
}
}
}
}
系统应用: