• Android(Intent 学习)


    Intent 是一个消息传递对象,Intent可以通过多种方式促进组件之间的通信,基本的三种用例:

    启动Acitivity:

      Activity表示应用中的一个屏幕,通过将Intent传递给startActivity(),您可以启动新的Activity实例。Intent描述了要启动的Activity,并携带了任何必要的数据.
    启动服务:

      Service 是一个不使用用户界面而在后台执行操作的组件。通过将 Intent 传递给 startService(),您可以启动服务执行一次性操作(例如,下载文件)。

    传递广播:

      广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast()sendOrderedBroadcast() 或 sendStickyBroadcast(),您可以将广播传递给其他应用。

      

    Intent类型

    显式Intent:按名称(完全限定类名)指定要启动的组件.

    隐身Intent:不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。

      

    Intent中包含的主要信息:
     组件名称(可选项,如果无组件名称则是隐式Intent)

      使用 setComponent()setClass()setClassName() 或 Intent 构造函数设置组件名称。

     操作

      指定要执行的通用操作的字符串,指定自己的操作,供 Intent 在您的应用内使用(或者供其他应用在您的应用中调用组件)。但是,您通常应该使用由 Intent 类或其他框架类定义的操作常量。以下是一些用于启动 Activity 的常见操作:

      

        ACTION_VIEW
    如果您拥有一些某项 Activity 可向用户显示的信息(例如,要使用图库应用查看的照片;或者要使用地图应用查看的地址),请使用 Intent 将此操作与 startActivity() 结合使用。
         ACTION_SEND
    这也称为“共享”Intent。如果您拥有一些用户可通过其他应用(例如,电子邮件应用或社交共享应用)共享的数据,则应使用 Intent 将此操作与 startActivity() 结合使用。

          使用 setAction() 或 Intent 构造函数为 Intent 指定操作。

      

     数据

      创建 Intent 时,除了指定 URI 以外,指定数据类型(其 MIME 类型)往往也很重要。例如,能够显示图像的 Activity 可能无法播放音频文件,即便 URI 格式十分类似时也是如此。因此,指定数据的 MIME 类型有助于 Android 系统找到接收 Intent 的最佳组件。但有时,MIME 类型可以从 URI 中推断得出,特别当数据是 content: URI 时尤其如此。这表明数据位于设备中,且由 ContentProvider 控制,这使得数据 MIME 类型对系统可见。

    要仅设置数据 URI,请调用 setData()。 要仅设置 MIME 类型,请调用 setType()。如有必要,可以使用 setDataAndType() 同时显式设置二者。

     类别

      一个包含应处理 Intent 组件类型的附加信息的字符串。常见类别:
      CATEGORY_BROWSABLE 目标 Activity 允许本身通过网络浏览器启动,以显示链接引用的数据,如图像或电子邮件。

      CATEGORY_LAUNCHER 该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。

      

      有关类别的完整列表,请参阅 Intent 类描述。

      使用 addCategory() 指定类别。

    显式 Intent 示例

      显式 Intent 是指用于启动某个特定应用组件(例如,应用中的某个特定 Activity 或服务)的 Intent。

      

    // Executed in an Activity, so 'this' is the Context
    // The fileUrl is a string URL, such as "http://www.example.com/image.png"
    Intent downloadIntent = new Intent(this, DownloadService.class);
    downloadIntent.setData(Uri.parse(fileUrl));
    startService(downloadIntent);

    隐式 Intent 示例

      隐式 Intent 指定能够在可以执行相应操作的设备上调用任何应用的操作。 如果应用无法执行该操作而其他应用可以,且希望用户选取要使用的应用,则使用隐式 Intent 非常有用。

      

    // Create the text message with a string
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
    sendIntent.setType("text/plain");
    
    // Verify that the intent will resolve to an activity
    if (sendIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(sendIntent);
    }



    原文链接:https://developer.android.google.cn/guide/components/intents-filters.html#Building

  • 相关阅读:
    无聊的时候,冷死了(三)
    素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法
    英语笔记
    大数乘法
    jsp的session完成登陆功能
    java中如何制定自定义异常
    jsp获取请求头信息
    JSP的taglib示例
    JSP的自定义标签
    java中路径中参数值是中文,打印到页面是乱码的解决方案
  • 原文地址:https://www.cnblogs.com/air-liyan/p/6168351.html
Copyright © 2020-2023  润新知