1. 关于显式Intent和隐式Intent

显式Intent即Intent实例化时已经确定好要打开哪个Activity,比如这样:

Intent intent = new Intent(MainActivity.this,TestActivity.class);
startActivity(intent);

隐式Intent则是正好相反,使用隐式Intent启动新的Activity时并不会直接指定要启动哪个Activity,而是会通过Action、 Category或Data等属性 ” 在系统上所有的应用中寻找符合条件的应用,这个匹配过程要求所有参数都完全匹配才算匹配成功

  • 如果符合条件的应用有多个时,系统会给出应用列表让用户选择启动哪个应用
  • 如果只有一个应用符合条件,系统就会直接启动这个应用
  • 如果没有一个应用符合条件,此时若是没有在相应位置设置try-catch块进行错误处理的话,应用会停止运行并报错

特殊的是,在使用隐式Intent启动Activity时,如果不指定category的话,在调用startActivity()这个方法时会自动将其设置为DEFAULT。所以如果一个Activity不需要特殊设置Category属性并可能会使用隐式Intent启动时,在AndroidMainfest.xml的配置项中Category应设置为DEFAULT。

2. 一些Intent的使用方式示例

以下使用的属性的参数还有很多
1. 使用Component Name打开新的Activity(显式Intent)

方法如下:

             //实例化一个ComponentName对象,使用new关键字,// 参数为要打开的Activity的包名称和Activity内部类的名称ComponentName componentName = new ComponentName("com.componentname","com.componentname.ComponentNameActivity");//实例化一个无参数IntentIntent intent = new Intent();//将设置好的ComponentName作为数据通过setComponent()方法放入intent中intent.setComponent(componentName);//启动ActivitystartActivity(intent);
2. 通过Action启动拨号和Data预设要拨的号码(隐形Intent)

方法如下:

                 //设置Action为Call用于启动拨号intent.setAction(Intent.ACTION_CALL);//通过Data属性预先设置好要拨的号码为5555intent.setData(Uri.parse("tel:5555"));startActivity(intent);
3. 通过Action和Category设置在启动时第一个显示(隐形Intent)

方法如下:

             //设置action为ACTION_MAIN用于让该页面在开始时启动intent.setAction(Intent.ACTION_MAIN);//设置category为CATEGORY_HOME用于程序启动第一个显示intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);
4. 通过Flags让Activity退出之后无法返回

方法如下:

             Intent intent = new Intent(MainActivity.this,DetailActivity.class);//通过Flags设置FLAG_ACTIVITY_NO_HISTORY来让这个Activity被关闭之后就无法返回,// 即不保存在历史栈中intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);startActivity(intent);

Android学习笔记——关于Intent相关推荐

  1. Android学习笔记之Intent

    页面跳转: startActivity(new Intent(A.this, B.class)); 页面跳转后,返回数据(finish()前返回数据) A.java: startActivityFor ...

  2. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  3. Android学习笔记(四):在Activity中跳转--Intent的使用

    Android学习笔记(四):在Activity中跳转--Intent的使用 上篇,我们实战了一个很小的项目BMI,通过BMI这个项目,可以很好的理解Activity的程序结构,以方便后面高级API的 ...

  4. Android学习笔记:TabHost 和 FragmentTabHost

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...

  5. Android学习笔记:TabHost 和 FragmentTabHost(转)

    Android学习笔记:TabHost 和 FragmentTabHost(转) 转自:http://www.cnblogs.com/asion/p/3339313.html 作者:Asion Tan ...

  6. Pro Android学习笔记(三三):Menu(4):Alternative菜单

    什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...

  7. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  8. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  9. Android学习笔记-常用的一些源码,防止忘记了

    Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...

最新文章

  1. 外部排序---置换选择+败者树
  2. Centos 6.4搭建svnadmin服务器
  3. 【CentOS 7笔记4】,两种修改密码方式#
  4. AOP(面向切面编程)大概了解一下
  5. 惯性制导精度是多少_航天装备的命中精度
  6. shell 如何避免误删目录
  7. win7 重启dns
  8. pyplot gtk2 conflicts with gtk3
  9. webpack4+vue打包简单入门 1
  10. 倍福软件安装及注意事项
  11. SpringBoot整合CXF框架实现Webservice服务端
  12. 计算机多人远程桌面连接,配置网络:实现多个远程桌面连接
  13. publish nacos metadata failed
  14. 爱情的诗·11~15节
  15. 学校计算机教学楼命名大全,学校楼名及释义集锦
  16. python 青少年人工智能_青少年人工智能教育的典范 优必学教孩子用Python编写一部人工智能的字典...
  17. css 标记选择器,CSS标记选择器
  18. 利用html 和css模仿必应搜索主页。(一)
  19. 通过按位与和按位或操作
  20. RTL-SDR 学习——什么是RTL-SDR(1)

热门文章

  1. Mysql实现查询一年内的考勤记录(行转列)
  2. 卡巴斯基或遭攻击,黑客称窃取了40000份文件资料
  3. vector里面的assign函数
  4. 6-2 计算长方体的表面积和体积
  5. 英文缩略词——全程及中文含义
  6. 什么是IPv6?它有什么特别之处?
  7. c语言如何做简单整人病毒,来来来,教你一个用C语言写个小病毒
  8. Plt 图例legend设置字体大小
  9. [exceptions]如何排查can not find symbol的编译错误
  10. Android项目实战之尚硅谷_硅谷p2p金融