在这个例子中将展示如何获取Application的几个基本属性信息:名字、Package标签、版本信息和图标信息。
创建一个用于存储基本信息的Class:
01.
class
PInfo {
02.
private
String appname =
""
;
03.
private
String pname =
""
;
04.
private
String versionName =
""
;
05.
private
int
versionCode =
0
;
06.
private
Drawable icon;
07.
private
void
prettyPrint() {
08.
log(appname +
"\t"
+ pname +
"\t"
+ versionName +
"\t"
+ versionCode +
"\t"
);
09.
}
10.
}
接下来是获取信息的主体:
01.
private
ArrayList < PInfo > getInstalledApps(
boolean
getSysPackages) {
02.
ArrayList < PInfo > res =
new
ArrayList < PInfo > ();
03.
List < PackageInfo > packs = getPackageManager().getInstalledPackages(
0
);
04.
for
(
int
i=
0
;i < packs.size();i++) {
05.
PackageInfo p = packs.get(i);
06.
if
((!getSysPackages) && (p.versionName ==
null
)) {
07.
continue
;
08.
}
09.
PInfo newInfo =
new
PInfo();
10.
newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
11.
newInfo.pname = p.packageName;
12.
newInfo.versionName = p.versionName;
13.
newInfo.versionCode = p.versionCode;
14.
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
15.
res.add(newInfo);
16.
}
17.
return
res;
18.
}
用这个方法来获取系统内所包含的Applications信息:
1.
private
void
listPackages() {
2.
ArrayList < PInfo > apps = getInstalledApps(
false
);
/* false = no system packages */
3.
final
int
max = apps.size();
4.
for
(
int
i=
0
; i < max; i++) {
5.
apps.get(i).prettyPrint();
6.
}
7.
}
还有一个相对比较简单的应用,借由PackageManager来获取Application信息:
01.
PackageManager manager =
this
.getPackageManager();
02.
try
{
03.
04.
PackageInfo info = manager.getPackageInfo(
this
.getPackageName(),
0
);
05.
String packageName = info.packageName;
06.
int
versionCode = info.versionCode;
07.
String versionName = info.versionName;
08.
09.
}
catch
(NameNotFoundException e) {
10.
// TODO Auto-generated catch block
11.
}
一般情况并不太需要这样的应用,但是可以借鉴这样的方法来处理类似的问题,多看一些总是好的!