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
    }
    

      

      

         

  • 相关阅读:
    云谷分布式端口扫描与代理验证系统(一)简介
    Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf_爱过了就好_新浪博客
    分享:QT QJson库编译心得
    分享:Zed Attack Proxy 2.0 发布,Web 渗透测试
    LIBTOOL is undefined 解决方法
    linux下.a/.so/.la目标库区别
    LDAmath文本建模
    分享:SchemaCrawler 9.4 发布,数据库结构输出
    JQ也要面向对象~在JQ中扩展静态方法和实例方法
    将不确定变为确定~Flag特性的枚举是否可以得到Description信息
  • 原文地址:https://www.cnblogs.com/JiMoRuXue/p/5072292.html
Copyright © 2011-2022 走看看