Android(Intent 学习)

相逢意气为君饮,系马高楼垂柳边。这篇文章主要讲述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()  结合使用。
【Android(Intent 学习)】 
      使用  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
 






    推荐阅读