隐式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. Java system.getproperty获取环境属性

    序号 属性 说明 1 java.version Java 运行时环境版本 2 java.vendor Java 运行时环境供应商 3 java.vendor.url Java 供应商的 URL 4 j ...

  2. (原)anaconda 的安装与在pycharm中的版本切换

    参考网页: http://continuum.io/blog/anaconda-python-3 http://conda.pydata.org/docs/intro.html#creating-py ...

  3. uva12489 Combating cancer(树同构)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud https://uva.onlinejudge.org/index.php?opt ...

  4. html+css布局小练习w3cfuns

    虽然花了很长时间,但是也知道了不少,这次也不像以前了,不知道怎么下手,虽然是照着图片做,不过也做出来了图片来自w3cfuns:网站图片url  看了w3cfuns的两天驾驭DIV+CSS 这个网站对新 ...

  5. 网站的优化----首页优化---app调取服务端数据

    高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是 ...

  6. php 输出昨天,今天,明天是星期几的方法

    <?php //php判断某一天是星期几的方法 function getWeek($unixTime=''){ $unixTime=is_numeric($unixTime)?$unixTime ...

  7. mysql sql优化<1>

    <pre name="code" class="html">explain SELECT t.* FROM ( SELECT t1.sn AS cl ...

  8. 定时关机命令-shutdown

    定时关机命令-shutdown 一般会用到的定时关机命令有两种: Shutdown -s -t 3600 1小时后自动关机(3600秒) at 12:00 Shutdown -s 12:00自动关闭计 ...

  9. cf494A Treasure

    A. Treasure time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  10. js设计模式系列之(一)请节约你的请求-代理模式

    What’s the proxy pattern? 代理模式其实就是将违反单一性原则的类给抽离出来,尽量满足开放和封闭的原则. 相当于一个类的行为只是一种,但是你可以给这个类添加额外的行为.比如: 一 ...