关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类的区别之我见
2014-07-08 01:30
1066 查看
PackageInfo:
获得方法:
常用字段:
public String packageName 包名
public ActivityInfo[] activities 所有<activity>节点信息
public ApplicationInfo applicationInfo <application>节点信息,只有一个
public ActivityInfo[] receivers 所有<receiver>节点信息,多个
public ServiceInfo[] services 所有<service>节点信息 ,多个
通过 PackageInfo 获取具体信息方法:
包名获取方法:packageInfo.packageName
icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions
ApplicationInfo:
获得方法:
特点:
ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的< application>标签中收集到的。
ApplicationInfo类 继承自 PackageItemInfo
说明:获取一个特定引用程序中<application>节点的信息。
字段说明:
flags字段: FLAG_SYSTEM 系统应用程序
FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
ResolveInfo:
获得方法:
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的< intent>标签收集到的信息。
ResolveInfo类
说明:根据<intent>节点来获取其上一层目录的信息,通常是<activity>、<receiver>、<service>节点信息。
常用字段:
public ActivityInfo activityInfo 获取 ActivityInfo对象,即<activity>或<receiver >节点信息
public ServiceInfo serviceInfo 获取 ServiceInfo对象,即<activity>节点信息
常用方法:
Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像
CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label
通过
ResolveInfo 获取具体信息方法:
包名获取方法:resolve.activityInfo.packageName
icon获取获取方法:resolve.loadIcon(packageManager)
应用名称获取方法:resolve.loadLabel(packageManager).toString()
ActivityInfo:
获得方法:
特点:
ActivityInfo类 继承自 PackageItemInfo
说明: 获得应用程序中<activity/>或者 <receiver />节点的信息 。我们可以通过它来获取我们设置的任何属性,包括
theme 、launchMode、launchmode等
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
获得方法:
PackageManager packageManager = context.getPackageManager();//返回packagemanager实例来找到全球包装信息(来自百度翻译) List<PackageInfo> allPackageInfos = packageManager .getInstalledPackages(packageManager.GET_UNINSTALLED_PACKAGES | packageManager.GET_ACTIVITIES);// 初始化时先要得到当前的所有进程特点:
常用字段:
public String packageName 包名
public ActivityInfo[] activities 所有<activity>节点信息
public ApplicationInfo applicationInfo <application>节点信息,只有一个
public ActivityInfo[] receivers 所有<receiver>节点信息,多个
public ServiceInfo[] services 所有<service>节点信息 ,多个
通过 PackageInfo 获取具体信息方法:
包名获取方法:packageInfo.packageName
icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions
ApplicationInfo:
获得方法:
List<PackageInfo> sysPackageInfos = new ArrayList<PackageInfo>();// 定义系统安装软件信息包 for (PackageInfo packageInfo : allPackageInfos)// 循环取出所有软件信息 { ApplicationInfo applicationInfo = packageInfo.applicationInfo;// 得到每个软件信息 }
特点:
ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的< application>标签中收集到的。
ApplicationInfo类 继承自 PackageItemInfo
说明:获取一个特定引用程序中<application>节点的信息。
字段说明:
flags字段: FLAG_SYSTEM 系统应用程序
FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
ResolveInfo:
获得方法:
Intent startIntent = new Intent(Intent.ACTION_MAIN, null);//为本startIntent设置行为为ACTION_MAIN startIntent.addCategory(Intent.CATEGORY_LAUNCHER);//为本startIntent设置启动方式为LAUNCHER startIntent.setPackage(packageInfo.getPkgName());//为本startIntent设置包名为packageInfo.getPkgName() //以startIntent为查询条件查询出需要启动的App的信息 //功能 :返回给定条件的所有ResolveInfo对象(本质上是Activity),集合对象 List<ResolveInfo> startInfoList = SoftManagementActivity.this .getPackageManager().queryIntentActivities(startIntent, 0); //如果startInfoList的长度小于1,则返回 if (startInfoList.size() < 1) { return; } //startInfoList中一般第一条就是启程App的信息 ResolveInfo startInfo = startInfoList.iterator().next();特点:
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的< intent>标签收集到的信息。
ResolveInfo类
说明:根据<intent>节点来获取其上一层目录的信息,通常是<activity>、<receiver>、<service>节点信息。
常用字段:
public ActivityInfo activityInfo 获取 ActivityInfo对象,即<activity>或<receiver >节点信息
public ServiceInfo serviceInfo 获取 ServiceInfo对象,即<activity>节点信息
常用方法:
Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像
CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label
通过
ResolveInfo 获取具体信息方法:
包名获取方法:resolve.activityInfo.packageName
icon获取获取方法:resolve.loadIcon(packageManager)
应用名称获取方法:resolve.loadLabel(packageManager).toString()
ActivityInfo:
获得方法:
ActivityInfo activityInfo = startInfo.activityInfo;
特点:
ActivityInfo类 继承自 PackageItemInfo
说明: 获得应用程序中<activity/>或者 <receiver />节点的信息 。我们可以通过它来获取我们设置的任何属性,包括
theme 、launchMode、launchmode等
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
相关文章推荐
- 关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类的区别之我见
- 关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类的区别
- 关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类的区别之我见
- 关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类
- packageinfo,resolveInfo,applicationInfo 等区别
- 获取android应用程序信息(PackageInfo、ActivityInfo、ResolveInfo)
- 关于四种JDBC驱动类型的区别
- 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)
- 通过PackageInfo获取ActivityInfo都是null
- 关于四种JDBC驱动类型的区别
- 【转】PackageInfo、ResolveInfo 笔记
- 通过包名打开另外一个应用程序和获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)
- 通过包名打开另外一个应用程序和获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)
- Android 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)
- PackageManager、PowerManager、AudioManager、PackageItemInfo、ActivityInfo、ServiceInfo、ApplicationInfo说明
- 关于四种JDBC驱动类型的区别
- 通过包名打开另外一个应用程序和获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)
- android 通过PackageInfo获取ActivityInfo
- 关于ResolveInfo的一些小记载
- PackageManager,PackageInfo,ApplicationInfo ,ResolveInfo 的用法