PackageInfo、ResolveInfo
来源:互联网 发布:影视大全软件下载 编辑:程序博客网 时间:2024/06/06 01:39
1.PackageInfo、ResolveInfo
PackageItemInfo:包含了一些信息的基类,
它的直接子类有:
ApplicationInfo、 ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。
它的间接子类有:
ActivityInfo、ProviderInfo、ServiceInfo。这个类包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。
这个类提供了属性:label、icon和meta-data。这个类的意图不是被自己调用。它只是简单分享被PackageManager返回的所有items之间的普通定义。比如,它自己并不实现Parcelable接口,但却帮助实现了Parcelable的子类ResolveInfo提供了方便的方法。
ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的AndrodiManifest.xml的<application>标签中收集到的。
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的<intent>标签收集到的信息。
PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。
ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label。
具体应用实例:
通过调用PackageManager的方法可以得到两种不同的信息:
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> applicationList = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
它是通过解析AndroidManifest.xml的<application>标签中得到的,所以它能得到所有的app。
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//通过Intent查找相关的Activity,更准确
List<ResolveInfo> resolveList = packageManager.queryIntentActivities(intent, 0);
//它是通过解析<Intent-filter>标签得到
<action Android:name=”android.intent.action.MAIN”/>
<action android:name=”android.intent.category.LAUNCHER”/>
一句话吧:
通过PackageInfo 获取具体信息方法:
包名获取方法:packageInfo.packageName
icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions
通过 ResolveInfo 获取具体信息方法:
包名获取方法:resolve.activityInfo.packageName
icon获取获取方法:resolve.loadIcon(packageManager)
应用名称获取方法:resolve.loadLabel(packageManager).toString()
// 获取应用程序下所有Activitypublic static ArrayList<String> getActivities(Context ctx) { ArrayList<String> result = new ArrayList<String>(); Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.setPackage(ctx.getPackageName()); for (ResolveInfo info : ctx.getPackageManager().queryIntentActivities(intent, 0)) { result.add(info.activityInfo.name); } return result; }
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo与ResolveInfo
- packageinfo,resolveInfo,applicationInfo 等区别
- packageinfo,resolveInfo,applicationInfo 等区别
- PackageManager,PackageInfo,ApplicationInfo ,ResolveInfo 的用法
- 获取android应用程序信息(PackageInfo、ActivityInfo、ResolveInfo)
- 实习入职第二天:PackageInfo、ResolveInfo
- github page 个人博客 && jekyll 记录
- [Web]removeChild删除子节点只删除一半解决方法
- 优秀程序员不得不知道的20个位运算技巧
- 流媒体之工具篇
- Ajax01 什么是ajax、获取ajax对象、ajax对象的属性和方法
- PackageInfo、ResolveInfo
- 文字超出部分自动省略
- Nested exception: The processing instruction target matching "[xX][mM][lL]" is not allowed.
- char与byte的区别
- [李景山php] ubuntu 安装 git 客户端
- Borland C++ Builder 5 启动报错 1 transfer item(s) contain syntax errors
- Mac下使用Web服务器性能/压力测试工具
- Linux which命令的使用方法
- hibernate与mybatis异同与比较(涵盖网上各个版本,清晰明了)