Android-隐式Intent
隐式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的更多相关文章
- android隐式intent使用场景解析
Android 隐式intent相信大家都有用过,大部分场景我们用显式intent已经能满足我们的业务需求,隐式intent大部分都是用来启动系统自带的Activity或Service之类的组件.昨天 ...
- Android 隐式 Intent 跳转注意事项
前几天正好看到<阿里巴巴 Android 开发手册>中提到的: “Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检 ...
- 在Android中Intent的概念及应用(一)——显示Intent和隐式Intent
Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...
- Android开发学习笔记:浅谈显示Intent和隐式Intent
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/655132 ...
- Android开发之隐式Intent中Intent-filter的三个属性-action,category,data
使用隐式Intent时,需要使用到意图过滤器Intent-filter.Intent-filter含有三个属性:action,category,data.通过这三个属性的组合,可以启动想要启动的act ...
- 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?
一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...
- Android开发学习之浅谈显示Intent和隐式Intent
Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...
- Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据
1. 两个Activity之间可以通过Intent切换, 包括显示Intent 和 隐式Intent. 实例代码 MainActivity.java public class MainActivity ...
- 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent
1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...
- Android基础Activity篇——其他隐式Intent
1.使用隐式Intent调用浏览器 修改FirstActivity中的按钮点击事件代码. Intent intent=new Intent(Intent.ACTION_VIEW); intent.se ...
随机推荐
- UIViewController的生命周期(图解)
当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc 创建对象,分配空间2.init (initWithNibName ...
- VS2012 编写C++程序的时候DOS窗口一闪而过解决办法。
在我每次通过VS2012 运行C++程序的时候,DOS窗口在显示结果的时候都是一闪而过.这样让人没法观察输出的结果.经试验找到了一较好的解决办法: 首先包含头文件"stdlib.h" ...
- 学习心得记录:[一]sql安装与配置
时间:2015年9月13日 02:43:09 科目:mysql的安装 笔记: 准备: 1.首先下载解压版的mysql 2.将下载好的文件放到c:\Program Files\MYSQL下(mysql文 ...
- 用jquery向网页添加背景图片 拉伸 模糊 遮罩层 代码
方法一:手动添加 1.在body内任意位置添加html代码 <div id="web_bg" style=" position:fixed; _position:a ...
- php 之 数据访问 查询关键字 (0506)
根据数据库中的car表做一个汽车查询页面: 一.一个关键字查询: 主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- Mac下安装 php+nginx+mysql 开发环境
一.mysql安装 mysql是安装最简单顺利的 1. 首先去官方网站下载Mac适用的MySQL的dmg包 下载页面 选择图中最下方的dmg包下载进行安装 安装完成后 MySQL的安装目录为/usr/ ...
- secureCRT命令大全
常用命令:一.ls 只列出文件名-a:列出所有文件,包含隐藏文件.(ll -a)-l:列表形式,包含文件的绝大部分属性.(ll)-r:递归显示.(ll -r)--help:此命令的帮助.(ll --h ...
- 最近用的几个sql语句
都在sqlserver数据库下操作,注意sqlserver与mysql和oracle的语法区别 用惯了mysql 和oracle,突然改用sqlserver,有诸多的不习惯,诸多的坑爹,好多的坑,一一 ...
- Windows平台的JDK安装(转)
下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:http://www.oracle.com/technetwork/java/javase/ ...
- Android手机SSH Client客户端推荐JuiceSSH
Windows上建立ssh服务器 参见: http://www.cnblogs.com/xred/archive/2012/04/21/2461627.html Android手机SSH Client ...