相逢意气为君饮,系马高楼垂柳边。这篇文章主要讲述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
推荐阅读
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
- Android studio变量重命名问题
- android小游戏 飞机躲子弹
- Android Studio启动模拟器
- Android:assests和raw的区别
- Android安全之Intent Scheme Url攻击
- android的ListView
- 在Android中Intent的概念及应用——显示Intent和隐式Intent
- android 编译代码注意事项