ComponentName是安卓提供给我们的通过A应用启动B应用的一个类,与Intent同位于Android.content包下,这个类主要用来定义可见一个应用程序组件,例如:Activity,Service,BroadcastReceiver或者ContentProvider。

这是ComponentName的构造函数:ComponentName(String pkg,String cls)

在Android中详细描述一个组件,我们需要知道该组件所在的应用包名,也就是在AndroidManifest.xml文件中manifest根结点下的package=“com.XXXXX.XXXXX",还有组件在应用程序中的完整路径名,拿Activity来说,也就是activity节点中name属性的值,如

mActivityName = "com.XxX.XXX.activity.diagnose.DiagnoseActivity"

所以ComponentName可以用来封装一个组件的应用包名和组件的名字

我们已经知道,在Android中组件之间的交流往往使用意图(Intent)来完成的,那么在Intent中有一个方法可以封装一个ComponentName,最后我们在使用意图去完成我们需要实现的功能。下面来讲一下ComponentName如何使用。

Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动(其中className是指完整的类名):

启动目标APP的主页面

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);

startActivity(intent);

启动目标APP的内部普通页面

ComponentName cn = new ComponentName(mPackageName, mActivityName);

try {

Intent intent = new Intent();

Bundle bundle = new Bundle();

bundle.putString("type", "1");//传递值

intent.putExtras(bundle);

intent.setComponent(cn);

startActivityForResult(intent, REQUEST_ID);//等待目标页面返回的结果

} catch (Exception e) {

e.printStackTrace();

}

但是有的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。

private void openApp(String packageName) {

PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);

resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveIntent.setPackage(pi.packageName);

List apps = pm.queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();

if (ri != null) {

String packageName = ri.activityInfo.packageName;

String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);

startActivity(intent);

}

}

android componentname activity,ComponentName的使用相关推荐

  1. Android中关于ComponentName的使用

    Android中Intent对象提供许多属性: ComponentName Action Flags Extras Catgory Data 其中,ComponentName可以启动Activity. ...

  2. Android学习之ComponentName的使用

    一.ComponentName简介 ComponentName,顾名思义,就是组件名称,这个类主要用来定义一个应用程序的组件,通过调用Intent中的setComponent方法,我们可以打开同个应用 ...

  3. c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...

    在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析​zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...

  4. Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...

  5. linux 和服务通讯,Android 的Activity和Service之间的通信

    在Android中Activity负责前台界面展示,service负责后台的需要长期运行的任务.Activity和Service之间的通信主要由IBinder负责.在需要和Service通信的Acti ...

  6. Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析

    1  背景 之所以写这一篇博客的原因是因为之前有写过一篇<Android应用setContentView与LayoutInflater加载解析机制源码分析>, 然后有人在文章下面评论和微博 ...

  7. Android Hook Activity 的几种姿势

    这篇博客已 API 27 的源码为基础分析 前言 在上一篇文章 Android Hook 机制之简单实战 中,我们介绍了 Hook 的要点 Hook 的选择点:静态变量和单例,因为一旦创建对象,它们不 ...

  8. Android 之 Activity 详解

    最近在学习Android开发方面的知识,整理了一下关于Android中Activity方面的知识,也算是对自己学的知识进行了总结.Activity 在 Android开发中有着极其重要的位置,Acti ...

  9. Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)

    目录 1. 前言 2. 正文 2.1 Activity类的startActivity()方法 2.2 Instrumentation类的execStartActivity()方法 2.3 Activi ...

最新文章

  1. 基于人工神经网络的不规则小天体引力场建模
  2. python利器怎么编程-python等自动化脚本编程利器 Script.NET
  3. .Net Core AA.FrameWork应用框架介绍
  4. PHP之MVC项目实战
  5. 生日祝福html_更新,礼包选择,头像框及太子生日金币活动
  6. 互联网创业的准备——行业与商业模式
  7. STM32F103代码远程升级(六)基于小米IoT开发者平台远程升级代码的实现
  8. 恩尼格玛机(字母转换,水题)
  9. dw相对路径怎么改_Dreamweaver绝对路径和相对路径
  10. Unity-瓦片地图详解
  11. Xbox360自制系统GOD包安装教程
  12. MindManager21简体中文永久版思维导图
  13. ChatGPT 侦探推理小说《神秘失踪》
  14. 软件开发项目计划编制过程(转)
  15. 杨云华师大计算机,2017-2018学年第二学期教师辅导-华东师范大学计算中心网站.DOC...
  16. php实现tptp客户端
  17. 创建、删除ubuntu账户,添加用户到组
  18. python数据挖掘 | 期末题
  19. 数据结构和算法(二):摘要算法之SHA和MD5
  20. 听完计算机讲座的感想,听讲座心得体会5篇

热门文章

  1. 为什么查询sap数据库表的时候前面要加sapsr3
  2. 关于凭证和冲销凭证的RFC
  3. 阿联酋是发达国家还是发展中国家
  4. oracle利用触发器实现自增列
  5. SAP 月末结帐及年末结帐步骤
  6. 成本费用跨年取得发票的财务、税务处理
  7. SAP的会计凭证类别
  8. SAP同一公司不同工厂间物料转储方案比较
  9. java继承中构造方法_java之继承中构造方法总结(文字版)
  10. mysql gui tools 问题_Navicat与MySQL GUI Tools管理工具的优缺点对比