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

时间: 2024-10-25 22:29:59

Android(Intent 学习)的相关文章

Android Studio 学习 - 基本控件的使用;Intent初学

Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本控件的理解和使用上暂时没碰到太多的问题.对比之下,各种监听事件与Delphi中也相差无几. 2. 使用Intent切换Activity (1)在不同的Activity之间跳转,首先要新建一个Activity. (2)创建一个新的Layout布局文件,布局文件的命名首字母用小写字母(Android S

【Android开发学习笔记】【第三课】Activity和Intent

首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

我的Android 4 学习系列之Intent 和 Broadcast Reciever

目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending Intent Intent Filter 和 Broadcast Reciever 简介 使用 Intent Filter 扩展应用程序的功能 监听 Broadcast Intent 监听设备状态改变 在运行时管理manifest Reciever Intent简介 Intent是一种消息传递机制

Android开发学习笔记:浅谈显示Intent和隐式Intent

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/655132 Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间.

【转载】Android开发学习笔记:Intent的简介以及属性的详解

http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Serv

Android(java)学习笔记121:android.intent.action.MAIN 与 android.intent.category.LAUNCHER 理解

先看看网路上的说法: android.intent.action.MAIN决定应用程序最先启动的 Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 通过实验后,发现有问题?                MAIN 与 LAUNCHER 并不是单纯的各管各的事情:              个人认为正确的说法是               我测试的结果是,如果一个应用没有LAUNCHER则该apk仍能安装到设备上,但是在桌面中图标中

Android基础学习第三篇—Intent的用法

写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对的地方,希望大家给与指正. 2. 由于类似于读书笔记,可能格式神马的会比较随(hen)意(chou),大家看着受不了,可以使劲吐槽. *************************************我只是分割线***************************************

Android开发学习笔记:Intent的简介以及属性的详解【转】

一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关

android学习之intent学习笔记

1 以代码介绍一下激活意图的方法: //显示激活意图 //方法1 // Intent intent=new Intent(); // intent.setClassName("com.example.multiactivity", "com.example.multiactivity.SecondActivity"); // startActivity(intent); //方法2 // Intent intent=new Intent(this, SecondAc