zoukankan      html  css  js  c++  java
  • 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
    }
    

      

      

         

  • 相关阅读:
    使用 Selenium
    Senium 简介
    第8章 动态渲染页面爬取
    Ajax 结果提取
    Ajax 分析方法
    WINDOW 2008多人访问设置
    Windows 2012设置允许单个用户连接多个会话的方法
    Windows Server 2012开启多人远程
    BOM 表
    修复材料工单分配材料订单重复占料问题的开发
  • 原文地址:https://www.cnblogs.com/JiMoRuXue/p/5072292.html
Copyright © 2011-2022 走看看