Android之ResolveInfo
来源:互联网 发布:淘宝客怎么注册买家 编辑:程序博客网 时间:2024/06/05 15:04
\samples\ApiDemos中含有大量的代码,其中首页ListActivity中核心代码如下:
List myData = new ArrayList();Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE);PackageManager pm = getPackageManager();List list = pm.queryIntentActivities(mainIntent, 0);
实际上就是设置Intent,检索我们可能需要的Activities,结果存放在一个List中。在这里需要说明下Intent.CATEGORY_SAMPLE_CODE ,
public static final String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
实际上是定义了一个新的Category,然后在AndroidMasnifest.xml定义Activity中增加这种新的定义:
<category android:name=”android.intent.category.SAMPLE_CODE” />
这就是我们检索的“特殊”标志。
看到ResolveInfo,想必应该就是Activity信息的集合,到Android SDK中查看其详细说明:ResolveInfo就是解析intent过程中返回的信息,实际上就是AndroidManifest.xml 标签的信息,例举AndroidManifest.xml 中一个具体Aactivity标签的信息,如下:
<activity android:name=”.app.HelloWorld” android:label=”@string/activity_hello_world”><intent-filter><action android:name=”android.intent.action.MAIN” /><category android:name=”android.intent.category.SAMPLE_CODE” /></intent-filter></activity>ResolveInfo实际上就是一个数据的集合,主要数据结构如下:
看到这些数据结构,就明白多了,详细信息还是到Android SDK中仔细阅读吧!如果我们将Activity的信息输出,显示如下:
获取Activity的链表并读取Activity的信息后,剩下的就是信息的检索:按照当前的路径,在Activity的链表中检索包含在这个路径的子文件夹或Activity,代码如下:
Intent activityIntent(String pkg, String componentName) /*相当与子文件夹*/{Intent result = new Intent();result.setClassName(pkg, componentName);return result;}Intent browseIntent(String path) /*相当与子文件夹*/{Intent result = new Intent();result.setClass(this, ApiDemos.class);result.putExtra(“com.example.android.apis.Path”, path);return result;}其中activityIntent ()相当与文件,单击后启动这个Activity;browseIntent()相当与子文件夹,单击后需要继续检索包含在这个路径下的子文件夹或者Activity。这里采用了递归算法,例如,当path =“ ..\content\”,检索的信息输出如下:
看了上面程序运行过程中的输出信息,以及代码核心的解析,估计大家对程序的整体都会有个比较全面的认识了,轻松阅读代码的细节。
总结说明
ApiDemos类似于检索文件夹中包含的子文件夹或文件(实际上是Java中的Package),有了这个思路,分析这个程序就简单多了。在其中也学习到了很多新的知识,这些都是在Android SDK中没有说明的,毕竟Android SDK不可能面面俱到的,所以去深入学习Android SDK中包含的例子,会有很多新的收获。
当然ApiDemos中包含了大量的使用实例例子,这里先介绍整个程序的核心,起到抛砖引玉的作用,学习过程中发现一些经典的实例与大家慢慢分享。
参考:http://www.moandroid.com/?p=1095
- Android之ResolveInfo
- android ResolveInfo运用
- android ResolveInfo运用
- 获取android应用程序信息(PackageInfo、ActivityInfo、ResolveInfo)
- Android开发之获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- android的学习点滴——PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- PackageInfo、ResolveInfo
- ResolveInfo类
- 倒排索引-搜索引擎的基石
- Cocos2D-html5 2.1.4 实现鼠标控制物体旋转
- 第一次讲课总结
- Python中的随机函数
- 十款超高人气FTP客户端软件横评(一)
- Android之ResolveInfo
- request.getSession(false)
- 【rzxt】详细了解taskmgr.exe进程的基本信息
- C++语法基础--泛型算法(generic algorithm)--find(),find_if()
- 正确的理解this 和 super
- 搭建自己的虚拟openerp环境
- Android 系统编译顺序
- NALU(NAL单元)的顺序要求
- Cactus入门