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 ...
随机推荐
- java新版中唤醒指定线层对象
import java.util.concurrent.locks.*; class Do9 { public static void main(String[] args) { Resource r ...
- properties文件的读取
Demo //声明资源器类 Properties pro=new Properties(); //获取路径 URL url= PropertiesTest.class.getClassLoader() ...
- u盘禁用
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\USBSTOR]" ...
- 40条优化php代码的小实例
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; ...
- Blocks(POJ 3734 矩阵快速幂)
Blocks Input The first line of the input contains an integer T(1≤T≤100), the number of test cases. E ...
- laravel实现发送qq邮件
首先修改config/mail.php 'from' => [ 'address' => 'hello@example.com', 'name' => 'Example', ], 修 ...
- sql语句读取所有父子标签
select A.HOSPITAL_ID from T_HOSPITAL A connect by prior A.HOSPITAL_ID=A.PARENT_ID start with A.HOSPI ...
- MTKdroidToolsV2.53 MTK安卓提取线刷资料的工具 使用教程
备份的时候需插入1G以上内存卡,并确保机器电量充足. 机器需要root才能备份. 最新版本 支持大部分机型 一键root
- hdu Joseph
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; ]; ...
- FJ省队集训DAY5 T1
思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...