PackageManager的简单用法

android系统中,有很多管理服务相关的类:TelephoneManager,WindowManager,SmsManager,ActivityManager等。

本文主要介绍下packageManager。这个服务主要用户获取应用程序中的packageName,icon,label等,初次之外,他也可以获取应用程序的占用内存大小以及缓存大小等信息。

•安装,卸载应用

•查询permission相关信息

•查询Application相关信息(application,activity,receiver,service,provider及相应属性等)

•查询已安装应用

•增加,删除permission

•清除用户数据、缓存,代码段等

我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表 


首先来看一张图:

http://hi.csdn.net/attachment/201110/12/0_1318430219z8Sh.gif

这张图很清晰的解释了各个工具类对应的能获取应用的相关信息。

对于PackageManger 类说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。

Demo1:利用PackagerManager这个类获取应用程序的相关的信息。得到应用程序的列表。

public class GetPackAge {

	private Context context;

	private PackageManager pm;

	public GetPackAge(Context context) {
		this.context = context;
		pm = context.getPackageManager();
	}

	public List<appinfo> getappinfo() throws Exception {
       //这句的意思是获取有可能被系统删除的但是还在应用程序列表中保留的appname.因为有些apk可能被删掉 但是数据还在 所以用GET_UNINSTALLED_PACKAGES 这个flag
           List<PackageInfo> infos = pm
				.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
		List<appinfo> appinfos = new ArrayList<appinfo>();
		for (PackageInfo info : infos) {
			appinfo app = new appinfo();
			// packagename
			String packname = info.packageName;
			app.setAppName(packname);
			// appname
			String appname = info.applicationInfo.loadLabel(pm).toString();
			app.setAppName(appname);
			// icon
			Drawable appicon = info.applicationInfo.loadIcon(pm);
			app.setAppicon(appicon);
			// version
			String appversion = info.versionName;
			app.setVersion(appversion);

			ApplicationInfo appinfo = pm.getPackageInfo(packname, 0).applicationInfo;
			if (filterApp(appinfo)) {
				app.setSystem(true);
			} else {
				app.setSystem(false);
			}
			appinfos.add(app);
			app = null;
		}
		return appinfos;
	}
}
关于测试类主要是就是建一个测试类,然后测试打印出自己需要的信息就可以了。


另外一个作用就是获取Launcher的相关信息。

package com.luochuang.luncherTest;

import java.util.ArrayList;
import java.util.List;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;

import com.luochuang.bean.LauncherItem;

public class LauncherManager {
	private Context context;
	private PackageManager packager;

	public LauncherManager(Context context) {
		this.context = context;
		packager = context.getPackageManager();
	}

	public List<LauncherItem> getluncher() {
		List<LauncherItem> lvalue = new ArrayList<LauncherItem>();
		Intent it = new Intent(Intent.ACTION_MAIN);
		it.addCategory(Intent.CATEGORY_LAUNCHER);
		List<ResolveInfo> ResolveInfos = packager.queryIntentActivities(it, 0);
		for (int i = 0; i < ResolveInfos.size(); i++) {
			ActivityInfo infos = ResolveInfos.get(i).activityInfo;
			String name = infos.loadLabel(packager).toString();
			Drawable image = infos.loadIcon(packager);
			ComponentName component = new ComponentName(
					infos.applicationInfo.packageName, infos.name);
			LauncherItem item = new LauncherItem(name,image,component);  
			lvalue.add(item);
		}
		return lvalue;
	}
}




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值