PackageManager

(PackageManager)信息类

  • 类图结构

 
                          

    • Android.content.pm包
  • ApplicationInfo
  • ComponentInfo
    • ActivityInfo
    • ProviderInfo
    • ServiceInfo
  • InstrumentationInfo
  • PermissionGroupInfo
  • PermissionInfo

  • PackageInfo
  • ResolveInfo

  • 用例

    • ApplicationInfo
    • ResolveInfo
    • PackageInfo

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		//获取包名PackageManager	PackageInfo	ApplicationInfo	ActivityInfo

		//获取包管理器
		PackageManager pm=this.getPackageManager();

		//获取所有的包信息
		List<PackageInfo> packageInfos=pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

		for (PackageInfo packageInfo : packageInfos) {

			//获取应用程序信息(<application>标签)
			ApplicationInfo applicationInfo=packageInfo.applicationInfo;

			//应用程序包名
			Log.i("liujun", "PackageInfo包名:---"+applicationInfo.packageName);

		}

		//////////////////////////////////////////////////////////////////////

		//创建意图
		Intent intent=new Intent();
		intent.setAction(Intent.ACTION_MAIN);
		intent.addCategory(Intent.CATEGORY_LAUNCHER);

		//获取解析信息对象集合
		List<ResolveInfo> resolveInfos=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

		for (ResolveInfo resolveInfo : resolveInfos) {

			//获取应用程序包名
			String packName=resolveInfo.activityInfo.packageName;

			Log.i("liujun", "ResolveInfo包名:--"+packName);

		}

		Log.i("liujun", "packageInfos长度:--"+packageInfos.size());

		Log.i("liujun", "ResolveInfo长度:--"+resolveInfos.size());

		/**
		 *	结果表明packageInfos.size()会多于resolveInfos.size()的
		 *	这是因为PackageInfo代表的是整个系统安装的程序(包)
		 *	ResolveInfo代表的是整个系统中含有桌面快捷图标的程序
		 * 	显然前者包含后者,且多于后者
		 */

	}

}

代码地址

http://download.csdn.net/detail/u010739551/7893685

补充

RunningTaskInfo

        ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

        //当前运行的任务栈信息集合
        List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);

        RunningTaskInfo runningTaskInfo=rti.get(0);

        //组件名
        ComponentName componentName=runningTaskInfo.topActivity;

        //包名
        String packageNameStr=componentName.getPackageName();
时间: 2024-10-14 07:58:48

PackageManager的相关文章

安装APK的错误码(PackageManager.java)

安装APK的错误码,定义在android源码中的这个文件中:frameworks\base\core\java\android\content\pm\PackageManager.java /** * if the package is already installed. * 程序已经存在 */ public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; /** * if the package archive file is inv

五、PackageManager获取版本号

PackageInfo代表的是关于一个包的所有信息,就相当于一个APP应用的清单文件中收集到的所有信息. 通过这个类我们就可以获取类似版本号等一些信息. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /**  * 得到应用程序的版本名称  */ private String getVersionName() {     // 用来管理手机的APK     PackageManager pm = getPackageManager();     t

PackageManager.getPackageSizeInfo||UserHandle.myUserId()

跟着教程去写获得缓存的逻辑.但是死活不出现.查了一下log说我参数不对. 然后看了看源码.和教程的不一样.多了一个参数.UserHandle.myUserId().查了一下,发写法 新写法: Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");  //先获得这个userid(我也不太清楚是干嘛的,稍后我查查) int userID = (Integer) myUserId.invoke(pm,null);  

android之PackageManager简单介绍

PackageManager相关 本类API是对全部基于载入信息的数据结构的封装,包含下面功能: 安装,卸载应用查询permission相关信息 查询Application相关信息(application,activity,receiver,service,provider及对应属性等) 查询已安装应用 添加?,删除permission 清除用户数据.缓存,代码段等 /** * PackageManager介绍: * 本类API是对全部基于载入信息的数据结构的封装,包含下面功能: * 安装,卸载

Android中获取应用程序(包)的信息----PackageManager

本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:   第一部分: 获取应用程序的packagename.label.icon等 :             第二部分:获取应用程序的占用大小,包括:缓存大小(cachsize).数据大小(datasize). 每部分都为您准备了简单丰富的实例,您一定不会错过. Android系统为我们提供了很多服务管理的类,包括ActivityManager.Po

Android PackageManager基础知识

一.PackageManagerService启动过程 SystemServer首先启动,创建一个ServerThread线程来启动所有Android核心服务,其中PackageManagerService.main方法启动了PackageManagerService. main方法中就是实例化PackageManagerService对象,并注册到ServiceManager中. PackageManagerService的构造过程设计到几个重要的操作:    1.创建Settings对象,向

Android PackageManager的使用

Android系统为我们提供了很多服务管理类,包括ActivityManager.PowerManager(电源管理).AudioManager(音频管理).PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息. 引入:AndroidManifest.xml文件节点说明: 相关类的介绍 PackageManger 类 说明: 获得已安装的应用程序信息 .可以通过getPackageManager()方法获得. 常用方法: public abstract PackageM

Android Framework 分析---PackageManager 分析

在windowphone,ios和android中到目前为止,还是android的市场份额最大.个人认为除了google开源外,广大开发者早就了android的霸主地位.各位兄弟姐妹开发出各种各样的apk,才组成android的广阔天下.本篇主要分析一下android系统是针对处理这些apk的,主要涉及到pm这块的代码.分析这种底层服务,最好从android的开启启动流程中开始分析.因为这样才能更清楚的了解服务的启动流程. 1.在SystemServer.java 中启动PM android 开

Android开发之版本管理,PackageManager类的使用

设置应用程序版本号在应用程序的manifest文件中定义应用程序版本信息.2个必须同时定义的属性:android:versionCode — 整型, 相对于其他种类的版本号而言, 表示应用程序代码的版本. 其值是个整型,因此其他应用程序可以在程序编码中判断它, 例如检查升级或降级关系. 可以对其设置任何值, 然而应当确保每一个后续发布的应用程序使用更大的值. 尽管系统并不强制执行这种规则, 但是每个后续版本使用增加的数字值是标准作法. 典型做法是, 你发布的第一个版本的versionCode为1