您的位置:首页 > 移动开发

获取系统内Applications的基本信息

2011-03-31 16:37 330 查看
在这个例子中将展示如何获取Application的几个基本属性信息:名字、Package标签、版本信息和图标信息。


创建一个用于存储基本信息的Class:

Java代码


class

PInfo {






private

String appname = ""
;




private

String pname = ""
;




private

String versionName = ""
;




private

int

versionCode = 0
;




private

Drawable icon;




private

void

prettyPrint() {




log(appname + "t"
+ pname + "t"
+ versionName + "t"
+ versionCode + "t"
);




}




}

class PInfo {  

     private String appname = "";  

     private String pname = "";  

     private String versionName = "";  

     private int versionCode = 0;  

     private Drawable icon;  

     private void prettyPrint() {  

         log(appname + "t" + pname + "t" + versionName + "t" + versionCode + "t");  

     }  

 }



接下来是获取信息的主体:

Java代码


private

ArrayList < PInfo > getInstalledApps(boolean

getSysPackages) {




ArrayList < PInfo > res = new

ArrayList < PInfo > ();




List < PackageInfo > packs = getPackageManager().getInstalledPackages

(0
);




for

(int

i=0
;i < packs.size();i++) {




PackageInfo p = packs.get(i);




if

((!getSysPackages) && (p.versionName == null

)) {




continue

;




}




PInfo newInfo = new

PInfo();




newInfo.appname =
p.applicationInfo.loadLabel
(getPackageManager()).toString();




newInfo.pname = p.packageName;




newInfo.versionName = p.versionName;




newInfo.versionCode = p.versionCode;




newInfo.icon = p.applicationInfo.loadIcon
(getPackageManager());




res.add(newInfo);




}




return

res;




}

private ArrayList < PInfo > getInstalledApps(boolean getSysPackages) {  

    ArrayList < PInfo > res = new ArrayList < PInfo > ();  

     List < PackageInfo > packs = getPackageManager().getInstalledPackages(0);  

     for(int i=0;i < packs.size();i++) {  

         PackageInfo p = packs.get(i);  

         if ((!getSysPackages) && (p.versionName == null)) {  

             continue ;  

         }  

        PInfo newInfo = new PInfo();  

        newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();  

         newInfo.pname = p.packageName;  

        newInfo.versionName = p.versionName;  

        newInfo.versionCode = p.versionCode;  

        newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());  

         res.add(newInfo);  

     }  

    return res;  

 }



用这个方法来获取系统内所包含的Applications信息:

Java代码


private

void

listPackages() {




ArrayList < PInfo > apps = getInstalledApps(false

);




final

int

max = apps.size();




for

(int

i=0
; i < max; i++) {




apps.get(i).prettyPrint();




}




}

private void listPackages() {  

    ArrayList < PInfo > apps = getInstalledApps(false);  

    final int max = apps.size();  

    for (int i=0; i < max; i++) {  

        apps.get(i).prettyPrint();  

    }  

 }



还有一个相对比较简单的应用,借由PackageManager来获取Application信息:


Java代码


PackageManager manager = this

.getPackageManager

();




try

{




PackageInfo info = manager.getPackageInfo

(this

.getPackageName(), 0
);




String packageName = info.packageName;




int

versionCode = info.versionCode;




String versionName = info.versionName;







} catch

(NameNotFoundException e) {




// TODO Auto-generated catch block




}

http://blog.sina.com.cn/s/blog_6d8189930100nyds.html



final Context context = mContext;

final PackageManager pm = context.getPackageManager();

abstract
PackageManager
getPackageManager

()

Return
PackageManager instance to find global package information.


获取系统内
Applications

的基本信息可以使用以下这个方法。

getPackageManager().getInstalledPackages
(0)

abstract




PackageInfo


getPackageInfo

(String
packageName, int flags)
Retrieve overall information about an application package that is
installed on the system.
http://firefox7.javaeye.com/blog/865027
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: