PackageInfo、ResolveInfo
来源:互联网 发布:自动加为好友淘宝 编辑:程序博客网 时间:2024/06/01 08:15
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
- Linux Shell脚本编程学习笔记和实战
- 递归监听文件目录
- 数据结构笔记之查找
- Eclipse下单个文件中文乱码问题
- Android Studio设置字体 编码格式
- PackageInfo、ResolveInfo
- 多图片上传
- CF#52 C Circular RMQ (线段树区间更新)
- Java内部类
- 有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).
- 无约束优化
- Spring mvc+hibernate+freemarker(开源项目)
- UVa 10801 - Lift Hopping (Floyd, Dijkstra, SPFA三合一)
- Shell排序法 C++实现