隐式Intent表示不具体明确要打开的activity,利用隐式intent我们可以打开其他应用。

  一个隐式intent的主要组成部分:

    1.action 要执行的操作。

      通常以intent类的常量表示。如:

      访问查看某个URL  Intent.ACTION_VIEW

      发送邮件      Intent.ACTION_SEND

    2.data 要访问的数据位置。 

      设备以外的数据,如某个网页URL

      指向某个文件的URI

      指向ContentProvider中某条记录的某个content URI

    3.type 操作涉及的数据类型

      如text/html或audio/mpeg3.

      如果一个intent包含某类数据的位置,那么通常可以从中推测出数据的类型。

    4.category 可选类别

      类别用于描述如何使用某个activity

      android.intent.category.LAUNCHER:activity应该显示在顶级应用启动器中。

      android.intent.category.INFO:虽然activity向用户显示了包信息,但它不应该显示在启动器中。

      android.intent.category.DEFAULT:DEFAULT类别必须明确的在intent过滤器中设置。如果说action告诉操作系统,activity能干啥;

      那么DEFAULT类别告诉操作系统activity愿意干啥。DEFAULT  类别实际隐含添加到了几乎每一个隐式intent中。(唯一的例外是LAUNCHER类别)

  如同显式intent,隐式intent也可以包含extra信息。不过,操作系统在寻找合适的activity时,不会使用任何附加在隐式intent上的extra。

  注意,隐式intent的action和data也可以与显式intent联合使用。这相当于要求特定的activity去处理特定任务。

  由上举例,如果想要一个用来查看某个网址的简单隐式intent,需要

    Action:Intent.ACTION_VIEW

    URL:某个具体URL网址的uri数据

<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="http" android:host="www.baidu.com"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

  此外补充一点,由于隐式intent并不会明确告知要打开哪些activity,有可能设备上就不会有合适的应用。这时候应用就会崩溃。为此我们在使用隐式intent之前,应该先进行安全检查,判断是否有合适的activity。

  

Intent i=new Intent();
....
PackageManager pm=getActivity().getPackageManager();
List<ResolveInfo> activities=pm.queryIntentActivities(i,0);
if(activities.size()>0){
//safe
}else{
//no suitable activity for this intent
}

  

  

     

Android-隐式Intent的更多相关文章

  1. android隐式intent使用场景解析

    Android 隐式intent相信大家都有用过,大部分场景我们用显式intent已经能满足我们的业务需求,隐式intent大部分都是用来启动系统自带的Activity或Service之类的组件.昨天 ...

  2. Android 隐式 Intent 跳转注意事项

    前几天正好看到<阿里巴巴 Android 开发手册>中提到的: “Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检 ...

  3. 在Android中Intent的概念及应用(一)——显示Intent和隐式Intent

    Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...

  4. Android开发学习笔记:浅谈显示Intent和隐式Intent

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/655132 ...

  5. Android开发之隐式Intent中Intent-filter的三个属性-action,category,data

    使用隐式Intent时,需要使用到意图过滤器Intent-filter.Intent-filter含有三个属性:action,category,data.通过这三个属性的组合,可以启动想要启动的act ...

  6. 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?

    一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...

  7. Android开发学习之浅谈显示Intent和隐式Intent

    Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...

  8. Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据

    1. 两个Activity之间可以通过Intent切换, 包括显示Intent 和 隐式Intent. 实例代码 MainActivity.java public class MainActivity ...

  9. 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent

    1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...

  10. Android基础Activity篇——其他隐式Intent

    1.使用隐式Intent调用浏览器 修改FirstActivity中的按钮点击事件代码. Intent intent=new Intent(Intent.ACTION_VIEW); intent.se ...

随机推荐

  1. UIViewController的生命周期(图解)

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                             创建对象,分配空间2.init (initWithNibName ...

  2. VS2012 编写C++程序的时候DOS窗口一闪而过解决办法。

    在我每次通过VS2012 运行C++程序的时候,DOS窗口在显示结果的时候都是一闪而过.这样让人没法观察输出的结果.经试验找到了一较好的解决办法: 首先包含头文件"stdlib.h" ...

  3. 学习心得记录:[一]sql安装与配置

    时间:2015年9月13日 02:43:09 科目:mysql的安装 笔记: 准备: 1.首先下载解压版的mysql 2.将下载好的文件放到c:\Program Files\MYSQL下(mysql文 ...

  4. 用jquery向网页添加背景图片 拉伸 模糊 遮罩层 代码

    方法一:手动添加 1.在body内任意位置添加html代码 <div id="web_bg" style=" position:fixed; _position:a ...

  5. php 之 数据访问 查询关键字 (0506)

    根据数据库中的car表做一个汽车查询页面:  一.一个关键字查询: 主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...

  6. Mac下安装 php+nginx+mysql 开发环境

    一.mysql安装 mysql是安装最简单顺利的 1. 首先去官方网站下载Mac适用的MySQL的dmg包 下载页面 选择图中最下方的dmg包下载进行安装 安装完成后 MySQL的安装目录为/usr/ ...

  7. secureCRT命令大全

    常用命令:一.ls 只列出文件名-a:列出所有文件,包含隐藏文件.(ll -a)-l:列表形式,包含文件的绝大部分属性.(ll)-r:递归显示.(ll -r)--help:此命令的帮助.(ll --h ...

  8. 最近用的几个sql语句

    都在sqlserver数据库下操作,注意sqlserver与mysql和oracle的语法区别 用惯了mysql 和oracle,突然改用sqlserver,有诸多的不习惯,诸多的坑爹,好多的坑,一一 ...

  9. Windows平台的JDK安装(转)

    下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:http://www.oracle.com/technetwork/java/javase/ ...

  10. Android手机SSH Client客户端推荐JuiceSSH

    Windows上建立ssh服务器 参见: http://www.cnblogs.com/xred/archive/2012/04/21/2461627.html Android手机SSH Client ...