Android intent详解

合集下载

Intent(意图)主要是解决Android

Intent(意图)主要是解决Android

Android_Intent意图详解 - Android移动开发技术文章_手机开发 - ...
Intent是一个将要执行的动作的抽象的描述,由Intent来协助完成android各个组件之间的通讯。比如调用Activity实例化对象的startActivity()来启动一个activity,或者由broadcaseIntent(...
Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name)。一个intent至少携带上述的一个内容。 Action。Action名,在上一
And 圣骑士wind - 博客园
Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast。 具体方法如下表: 组件名称 方法名称 Activity startActi...
Pro Android学习笔记(十一):了解Intent(中) - 恺风(Wei)的专栏 - ...
Intent(意图)主要是解决Android应用的各项组件之间的通讯。 Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的...
android Intent机制详解 - 开源中国社区
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选...

详解Android应用开发中Intent的作用及使用方法

详解Android应用开发中Intent的作用及使用方法

详解Android应⽤开发中Intent的作⽤及使⽤⽅法Intent是⼀种运⾏时绑定(run-time binding)机制,它能在程序运⾏过程中连接两个不同的组件。

通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。

⽐如,有⼀个Activity希望打开⽹页浏览器查看某⼀⽹页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到⽹页浏览器的Activity来浏览⽹页。

Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的,不同类型的组件有不同的传递Intent⽅式:要激活⼀个新的Activity,或者让⼀个现有的Activity做新的操作,可以通过调⽤Context.startActivity()或者Activity.startActivityForResult()⽅法。

要启动⼀个新的Service,或者向⼀个已有的Service传递新的指令,调⽤Context.startService()⽅法或者调⽤Context.bindService()⽅法将调⽤此⽅法的上下⽂对象与Service绑定。

Context.sendBroadcast()、Context.sendOrderBroadcast()、Context.sendStickBroadcast()这三个⽅法可以发送Broadcast Intent。

发送之后,所有已注册的并且拥有与之相匹配IntentFilter的BroadcastReceiver就会被激活。

Intent⼀旦发出,Android都会准确找到相匹配的⼀个或多个Activity,Service或者BroadcastReceiver作响应。

Android+Intent机制实例详解

Android+Intent机制实例详解

Android Intent机制实例详解(1)Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。

Intent这个英语单词的本意是“目的、意向”等,对于较少从事于大型平台开发工作的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数/方法调用,或者上节中提到的通过库调用接口的方式不太一样。

在Intent的使用中你看不到直接的函数调用,相对函数调用来说,Intent是更为抽象的概念,利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。

Android中与Intent相关的还有Action/Category及Intent Filter等,另外还有用于广播的Intent,这些元素掺杂在一起,导致初学者不太容易迅速掌握Intent的用法。

在讲解这些名词之前,我们先来从下面的例子中感受一下Intent的一些基本用法,看看它能做些什么,之后再来思考这种机制背后的意义。

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。

另外Intent除了发送外,还可用于广播,这些都将在后文进行详细讲述。

下面的一小节我们来看看显式Intent的用法。

显式的Intent(Explicit Intent)同一个应用程序中的Activity切换我们在前面的章节已经讨论过Activity的概念,通常一个应用程序中需要多个UI屏幕,也就需要多个Activity类,并且在这些Activity之间进行切换,这种切换就是通过Intent机制来实现的。

Intent深入详解PPT课件

Intent深入详解PPT课件
10
用于指示Android系统如何加载并运行一个操作, 可以通过addFlags()方法进行增加。
11
12
13
14
15
16
17
18
19
20
指定要接收短信的手机号码,如果不指定,则在短 信接收人处将不会显示号码,用户要自己填写:
◦ Uri uri = Uri.parse("smsto:13621384455");
42
感谢观看
The user can demonstrate on a projector or computer, or print the presentation and make it into a film
43
21
22
23
24
25
调用发送短信的Action:
◦ it.setAction(Intent.ACTION_SEND);
指定要发送的图片,直接从sdcard上指定:
◦ Uri uri = Uri.parse("file:///sdcard/mypic.jpg");
设置要发送的信息内容:
◦ public static Intent createChooser(Intent target, CharSequence title)
38
39
40
提问与解答环节
Questions and answers
41
结束语 CONCLUSION
感谢参与本课程,也感激大家对我们工作的支持与积极的参与。课程 后会发放课程满意度评估表,如果对我们课程或者工作有什么建议和 意见,也请写在上边,来自于您的声音是对我们最大的鼓励和帮助, 大家在填写评估表的同时,也预祝各位步步高升,真心期待着再次相 会!

android中intent的用法

android中intent的用法

android中intent的用法Intent是Android开发中一个非常重要的概念,它是一种对象,用于在应用程序组件(如Activity、Service、BroadcastReceiver 等)之间传递信息。

通过使用Intent,我们可以启动Activity、传递数据给Service、接收广播等。

下面将详细介绍Intent在Android开发中的用法。

一、Intent的基本用法Intent可以通过AndroidSDK中的Context类的getIntent()方法创建,它可以包含多个Action和数据,用于启动不同的组件。

以下是Intent的基本用法示例:1.启动Activity:```javaIntentintent=newIntent(context,ActivityClass.class);startActivity(intent);```上述代码创建了一个Intent对象,指定了要启动的Activity的类名,并通过startActivity()方法启动该Activity。

2.启动Service:```javaIntentintent=newIntent(context,ServiceClass.class);intent.putExtra("key",value);//传递数据给Servicecontext.startService(intent);```上述代码创建了一个Intent对象,指定了要启动的Service的类名,并通过startService()方法启动该Service,并传递了一些数据给Service。

二、使用Intent传递数据除了启动组件之外,Intent还可以用于在组件之间传递数据。

可以使用putExtra()方法向Intent中添加数据,这些数据可以在另一个组件中使用getIntent()方法获取。

以下是一些传递数据的示例:1.启动Activity并传递数据:```javaIntentintent=newIntent(context,ActivityClass.class);intent.putExtra("key",value);//添加数据到Intent中startActivity(intent);```在另一个Activity中,可以使用getIntent()方法获取Intent,并使用getExtra()方法获取之前添加的数据。

intent在android中的用法

intent在android中的用法

intent在android中的用法在Android开发中,Intent是一种用于在应用程序组件之间传递信息的消息对象。

它可以用于启动活动(Activity)、服务(Service)或发送广播(Broadcast)。

以下是Intent在Android 中的几种常见用法:1.启动活动(Starting Activities):使用Intent启动一个新的活动。

例如,从当前活动跳转到另一个活动。

2.传递数据给活动(Passing Data to Activities):通过Intent的putExtra()方法,可以传递基本数据类型、字符串、序列化对象等。

3.返回数据给调用活动(Returning Data to the Calling Activity):使用startActivityForResult()启动新活动,并在新活动中使用setResult()设置返回数据。

4.启动服务(Starting Services):使用Intent启动服务,服务可以在后台执行长时间运行的操作。

5.发送广播(Sending Broadcasts):使用Intent发送广播,所有注册了相应广播接收器的组件都可以接收到广播。

6.隐式意图(Implicit Intents):不指定具体的组件类,而是声明要执行的操作。

系统会选择能够处理该操作的组件。

7.PendingIntent:PendingIntent是一种特殊的Intent,它允许你在稍后的某个时间点执行一个操作,或者由其他应用程序执行。

常用于通知、闹钟等场景。

8.使用Intent过滤器(Intent Filters):在AndroidManifest.xml中,使用<intent-filter>标签来声明活动、服务等可以响应哪些类型的Intent。

这对于定义应用程序的主入口点或响应系统事件非常有用。

Android广播大全IntentAction事件详解

Android广播大全IntentAction事件详解

Android⼴播⼤全IntentAction事件详解具体内容如下所⽰:Intent.ACTION_AIRPLANE_MODE_CHANGED;//关闭或打开飞⾏模式时的⼴播Intent.ACTION_BATTERY_CHANGED;//充电状态,或者电池的电量发⽣变化//电池的充电状态、电荷级别改变,不能通过组建声明接收这个⼴播,只有通过Context.registerReceiver()注册Intent.ACTION_BATTERY_LOW;//表⽰电池电量低Intent.ACTION_BATTERY_OKAY;//表⽰电池电量充⾜,即从电池电量低变化到饱满时会发出⼴播Intent.ACTION_BOOT_COMPLETED;//在系统启动完成后,这个动作被⼴播⼀次(只有⼀次)。

Intent.ACTION_CAMERA_BUTTON;//按下照相时的拍照按键(硬件按键)时发出的⼴播Intent.ACTION_CLOSE_SYSTEM_DIALOGS;//当屏幕超时进⾏锁屏时,当⽤户按下电源按钮,长按或短按(不管有没跳出话框),进⾏锁屏时,android系统都会⼴播此Action消息Intent.ACTION_CONFIGURATION_CHANGED;//设备当前设置被改变时发出的⼴播(包括的改变:界⾯语⾔,设备⽅向,等,请参考Configuration.java)Intent.ACTION_DATE_CHANGED;//设备⽇期发⽣改变时会发出此⼴播Intent.ACTION_DEVICE_STORAGE_LOW;//设备内存不⾜时发出的⼴播,此⼴播只能由系统使⽤,其它APP不可⽤?Intent.ACTION_DEVICE_STORAGE_OK;//设备内存从不⾜到充⾜时发出的⼴播,此⼴播只能由系统使⽤,其它APP不可⽤?Intent.ACTION_DOCK_EVENT;////发出此⼴播的地⽅frameworks\base\services\java\com\android\server\DockObserver.javaIntent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;////移动APP完成之后,发出的⼴播(移动是指:APP2SD)Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;//正在移动APP时,发出的⼴播(移动是指:APP2SD)Intent.ACTION_GTALK_SERVICE_CONNECTED;//Gtalk已建⽴连接时发出的⼴播Intent.ACTION_GTALK_SERVICE_DISCONNECTED;//Gtalk已断开连接时发出的⼴播Intent.ACTION_HEADSET_PLUG;//在⽿机⼝上插⼊⽿机时发出的⼴播Intent.ACTION_INPUT_METHOD_CHANGED;//改变输⼊法时发出的⼴播Intent.ACTION_LOCALE_CHANGED;//设备当前区域设置已更改时发出的⼴播Intent.ACTION_MANAGE_PACKAGE_STORAGE;////未正确移除SD卡(正确移除SD卡的⽅法:设置--SD卡和设备内存--卸载SD卡),但已把SD卡取出来时发出的⼴播//⼴播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)Intent.ACTION_MEDIA_BUTTON;//按下"Media Button" 按键时发出的⼴播,假如有"Media Button"按键的话(硬件按键)Intent.ACTION_MEDIA_CHECKING;//插⼊外部储存装置,⽐如SD卡时,系统会检验SD卡,此时发出的⼴播?Intent.ACTION_MEDIA_EJECT;//已拔掉外部⼤容量储存设备发出的⼴播(⽐如SD卡,或移动硬盘),不管有没有正确卸载都会发出此⼴播?//⼴播:⽤户想要移除扩展介质(拔掉扩展卡)。

flutter的androidintent 用法

flutter的androidintent 用法

flutter的androidintent 用法AndroidIntent是Flutter框架中用于在Flutter应用程序中启动Android原生活动的组件。

通过使用AndroidIntent,Flutter应用程序可以与Android系统进行更紧密的集成,实现跨平台的交互功能。

一、使用AndroidIntent启动Activity要使用AndroidIntent启动Activity,首先需要在Flutter项目中引入AndroidIntent插件。

可以使用以下命令通过pub.dev进行安装:```shellflutter pub add androidintent```安装完成后,可以在Flutter代码中通过以下方式启动Activity:```dartimport 'package:androidintent/androidintent.dart';void startActivity() {// 创建启动Activity的Intent对象var intent = AndroidIntent();// 设置启动Activity的参数intent.action = 'your_action';intent.data = 'your_data';// 启动ActivityAndroidPlatformChannel.platform().startActivity(intent);}```在上述代码中,我们首先引入了androidintent包,然后创建了一个AndroidIntent对象,并设置了启动Activity的action和data 参数。

最后,通过AndroidPlatformChannel启动Activity。

二、处理Activity返回结果在使用AndroidIntent启动Activity时,还可以通过设置result属性来处理Activity返回结果。

Android组件系列----Intent详解

Android组件系列----Intent详解

Android组件系列----Intent详解【声明】欢迎转载,但请保留⽂章原始出处→_→【正⽂】Intent组件虽然不是四⼤组件,但却是连接四⼤组件的桥梁,学习好这个知识,也⾮常的重要。

⼀、什么是Intent1、Intent的概念:Android中提供了Intent机制来协助应⽤间的交互与通讯,或者采⽤更准确的说法是,Intent不仅可⽤于应⽤程序之间,也可⽤于应⽤程序内部的activity, service和broadcast receiver之间的交互。

Intent这个英语单词的本意是“⽬的、意向、意图”。

Intent是⼀种运⾏时绑定(runtime binding)机制,它能在程序运⾏的过程中连接两个不同的组件。

通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

activity、service和broadcast receiver之间是通过Intent进⾏通信的,⽽另外⼀个组件Content Provider本⾝就是⼀种通信机制,不需要通过Intent。

我们来看下⾯这个图就知道了:如果Activity1需要和Activity2进⾏联系,⼆者不需要直接联系,⽽是通过Intent作为桥梁。

通俗来讲,Intnet类似于中介、媒婆的⾓⾊。

2、对于向这三种组件发送intent有不同的机制:使⽤Context.startActivity() 或 Activity.startActivityForResult(),传⼊⼀个intent来启动⼀个activity。

使⽤ Activity.setResult(),传⼊⼀个intent来从activity 中返回结果。

将intent对象传给Context.startService()来启动⼀个service或者传消息给⼀个运⾏的service。

将intent对象传给 Context.bindService()来绑定⼀个service。

intent在android中的用法 -回复

intent在android中的用法 -回复

intent在android中的用法-回复在Android开发中,Intent是一个关键的概念,它用于在不同的组件之间进行通信,包括Activity、Service、BroadcastReceiver等。

在本文中,我们将一步一步回答关于Intent在Android中的用法。

第一步:理解Intent的概念Intent是Android中的一个对象,它用于在不同的组件之间传递消息。

可以将Intent看作是一种“意图”,它描述了一个动作,例如启动或停止一个组件,发送或接收一条广播等。

通过Intent,我们可以启动另一个Activity并传递一些数据,启动一个Service执行后台任务,发送一个广播给其他组件等。

第二步:创建和使用Intent要创建一个Intent对象,可以使用以下代码:javaIntent intent = new Intent(context, targetActivity.class);其中,context是当前活动的上下文,targetActivity是我们想要启动的目标Activity。

创建Intent时,可以指定启动目标Activity所需的参数。

要启动另一个Activity,可以使用以下代码:javastartActivity(intent);这将启动目标Activity,并将控制权转移到目标Activity。

第三步:传递数据通过Intent,我们可以在不同的组件之间传递数据。

要传递数据,可以使用以下代码:javaintent.putExtra(key, value);其中,key是一个字符串键,用于标识数据,value是要传递的数据。

在目标Activity中,可以使用以下代码获取传递的数据:javagetIntent().getXXXExtra(key);其中,XXX可以是不同的数据类型,例如getIntExtra()、getStringExtra()等,根据传递的数据类型选择相应的方法。

Intent 详解

Intent  详解

Intent 详解概念:Intent是执行某操作的一个抽象描述概述:Intent包含四个方面的内容:Action ,data Catagories,extrasAction要执行的动作(action)的一个简要描述. 通过setAction()方法或在清单文件AndroidManifest.xml中设置。

默认为:DEFAULT。

标准的Activity Actions:这些Action是被通过startActivity (启动),其中最常用的连个∙ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。

∙ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。

∙ACTION_ATTACH_DATA:表明某些数据可以被附加到其他地方,例如,照片可以附加到联系人中,这主要由接受着决定数据被附加到那里,而不是由Intent决定最终目的地。

∙ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据∙ACTION_PICK:从数据中得到相应的数据项∙ACTION_CHOOSER:在程序执行前,显示多个可以选择的Activity,供用户选择∙ACTION_GET_CONTENT:返回用户指定的数据类型(与ACTION_PICK不同的是,这里只是指定用户想要的数据类型,而不是数据的存储URI或者其他用户可以得到数据的路径)∙ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。

∙ACTION_CALL:直接呼叫Data中所带的号码。

∙ACTION_SEND:由用户指定发送方式进行数据发送操作。

∙ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。

Android中的intent

Android中的intent

Android中的intent在你开始与拨号盘交互之前,你需要你理解你要使用的代码类型。

Andriod使用Intent在应用程序中定义工作。

一旦你掌握了Intents的使用,一个全新的应用程序开发世界将会想你敞开。

本节定义了Intent是什么和如何使用它。

一个Intent是Android从一个Activity(活动)传递信息到另外一个活动的方法。

你可以认为一个Intent是一个活动间交换的信息。

例如,假定你有一个活动需要来打开一个网页浏览器并且在Android设备上显示一个页面。

你的活动应当发送一个“在网页浏览器中打开某页的Intent(意图)”,就像一个WEB_SEARCH_ACTION的Intent,一个Android Intent解答器。

Intent解答器从语法上分析一个活动的列表并且选择最匹配你的Intent的一个。

那就是,网页浏览器的活动。

Intent解答器然后传递你的网页到浏览器中并且启动网页浏览器活动。

Intents被分成两个主要目录●Activity Action Intents(活动动作意图)Intents用来呼叫应用程序以外的活动。

只有一个活动可以处理Intent。

例如,对于网页浏览器,你需要打开网页浏览器活动来显示一个页面。

●Broadcast Intents(广播意图)Intents被送出到多个活动来处理。

一个被Android发出的广播意图的例子就是,当前电池的电量。

任何活动处理这个意图并适时的反应。

——例如,如果电池电量低到一定程度,取消一个活动。

表格7-1列出并且描述了通用的,可以使用活动动作意图。

正如你注意到的一样,大多数情况下,从Intent名字可以看出这个Intent是做什么的。

Activity Action Intent MessageADD_SHORTCUT_ACTION增加一个功能快捷菜单到Android的主屏ALL_APPS_ACTION列出设备上可用的所有应用程序ANSWER_ACTION接电话BUG_REPORT_ACTION打开调试报告活动CALL_ACTION呼叫一个提供的位置DELETE_ACTION删除定义的数据DIAL_ACTION打开拨号活动并且拨打一个定义好的号码EDIT_ACTION对有权使用的数据提供编辑拨打一个紧急号码EMERGENCY_DIAL_ACTIONFACTORY_TEST_ACTION回复工厂测试设定GET_CONTENT_ACTION选择并返回定义的数据INSERT_ACTION插入一个空的条目MAIN_ACTION建立一个活动开始点PICK_ACTION挑选一个条目并且返回一个选择PICK_ACTIVITY_ACTION挑选一个特定的活动(返回一个类)RUN_ACTION执行特定的数据SEARCH_ACTION在系统上启动搜索SEND_ACTION发送数据给没有定义的接收者SENDTO_ACTION发送数据到指定的接收者SETTINGS_ACTION启动系统设定SYNC_ACTION和外部的源同步手机VIEW_ACTION(DEFAULT_ACTION)打开一个视图WALLPAPER_SETTINGS_ACTION显示修改Android墙纸的设定WEB_SEARCH_ACTION打开谷歌搜索,或者其它定义过的网页注意本章中的应用程序会用到列在表7-1中的Intents:CALL_ACTION和DIAL_ACTION。

android intent原理

android intent原理

android intent原理在 Android 中,Intent 是一种用于在不同组件 如活动、服务、广播接收器)之间传递消息和执行操作的机制。

Intent 的原理主要包括两个方面:通信和动作。

1.通信:Intent 是在 Android 组件之间进行通信的载体。

它可以用来:•启动组件:比如启动另一个活动 Activity)、启动服务 Service)或发送广播 Broadcast)。

•传递数据:可以携带数据 称为 Extras),这些数据可以是基本类型 如字符串、整数等)或者是复杂的对象,用于在组件之间传递信息。

2.动作:Intent 还可以指定执行的动作,这决定了接收 Intent 的组件应该执行什么样的操作。

动作是通过 Intent 中的 action 字段来定义的,比如:•ACTION_VIEW:用于查看数据,比如打开一个网页或显示图片。

•ACTION_SEND:用于发送数据,比如发送邮件或分享内容。

Intent 的工作原理可以概括为以下几个步骤:1.创建 Intent:通过构造函数创建 Intent 对象,并设置要执行的动作 Action)、要操作的数据 Data)以及其他必要的信息 Extras)。

2.启动目标组件:使用 Intent 启动目标组件 比如启动一个活动、发送广播或启动服务)。

这可以通过startActivity()、startActivityForResult()、sendBroadcast()、startService() 等方法实现。

3.目标组件响应:接收 Intent 的目标组件根据其接收到的 Intent 中的信息执行相应的操作。

比如,活动可以根据收到的 Intent 执行特定的操作,或者服务可以在后台处理接收到的 Intent。

Android 系统会根据 Intent 中的信息找到合适的组件来执行相应的操作。

这个匹配过程可以通过 Intent 中的信息 例如 Action、Category、Data、Type 等)以及清单文件中的声明 例如 <intent-filter> 标签)来确定哪个组件能够最好地处理这个 Intent。

intent构造函数

intent构造函数

intent构造函数Intent构造函数:Android应用间通信的重要工具在Android开发中,应用间通信是非常重要的一环。

而Intent构造函数则是实现应用间通信的重要工具之一。

Intent构造函数是Android中的一个类,它可以用来传递消息、启动Activity、启动Service等。

在本文中,我们将详细介绍Intent构造函数的使用方法和注意事项。

Intent构造函数的基本用法Intent构造函数的基本用法非常简单。

我们可以通过以下代码创建一个Intent对象:Intent intent = new Intent();这个Intent对象可以用来传递消息、启动Activity、启动Service 等。

例如,我们可以通过以下代码启动一个Activity:Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);这个代码片段中,我们创建了一个Intent对象,并指定了要启动的Activity的类名。

然后,我们调用startActivity()方法启动这个Activity。

除了启动Activity,Intent构造函数还可以用来启动Service。

例如,我们可以通过以下代码启动一个Service:Intent intent = new Intent(MainActivity.this, MyService.class);startService(intent);这个代码片段中,我们创建了一个Intent对象,并指定了要启动的Service的类名。

然后,我们调用startService()方法启动这个Service。

Intent构造函数的注意事项在使用Intent构造函数时,需要注意以下几点:1. Intent构造函数的第一个参数是Context对象。

这个Context对象可以是Activity、Service、Application等。

Android中Intent传递对象的3种方式详解

Android中Intent传递对象的3种方式详解

Android中Intent传递对象的3种⽅式详解前⾔相信Intent的⽤法⼤家已经⽐较熟悉了,Intent可以⽤来启动Activity,Service等等,同时我们也可以通过Intent来进⾏传递数据,当我们使⽤Intent在Activity 间传递信息时发现putExtra()⽅法并不⽀持⾃定义对象的传输,下⾯就来介绍三种解决⽅式。

⼀、Serializable ⽅式这是最简单的⼀种⽅法,因为我们要做的就是让我们⾃定义的对象实现 Serializable 这个空接⼝。

public class Person implements Serializable{private String mName;private String mAddress;public String getName() {return mName;}public void setName(String name) {mName = name;}public String getAddress() {return mAddress;}public void setAddress(String address) {mAddress = address;}}这个时候,就已经可以使⽤Intent 的putExtra() ⽅法传递这个⾃定义对象了,在Activity中这样使⽤Person person = new Person();person.setName("Hwaphon");person.setAddress("Anhui");Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("person",person);startActivity(intent);finish();在Activity中接收数据Intent intent = getIntent();Person person = (Person) intent.getSerializableExtra("person");使⽤Serializable⽅法虽然⼗分简单,但是效率却不容乐观,因为它会把整个对象序列化,开销⼗分⼤,为了追求效率,我们不得不使⽤另⼀种⽅法,也就是Parcelable ⽅法。

Android_Intent_用法全面总结

Android_Intent_用法全面总结

Android Intent 用法全面总结[代码] 调用拨号程序// 给移动客服10086拨打电话Uri uri = Uri.parse("tel:10086");Intent intent = new Intent(Intent.ACTION_DIAL, uri); startActivity(intent);[代码] 发送短信或彩信// 给10086发送内容为“Hello”的短信Uri uri = Uri.parse("smsto:10086");Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "Hello");startActivity(intent);// 发送彩信(相当于发送带附件的短信)Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra("sms_body", "Hello");Uri uri = Uri.parse("");intent.putExtra(Intent.EXTRA_STREAM, uri);intent.setType("image/png");startActivity(intent);[代码] 通过浏览器打开网页// 打开Google主页Uri uri = Uri.parse("");Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);[代码] 发送电子邮件//Uri uri = Uri.parse("mailto:");Intent intent = new Intent(Intent.ACTION_SENDTO, uri); startActivity(intent);// “Hello”的邮件Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_EMAIL, "");intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); intent.putExtra(Intent.EXTRA_TEXT, "Hello");intent.setType("text/plain");startActivity(intent);// 给多人发邮件Intent intent=new Intent(Intent.ACTION_SEND);String[] tos = {"", ""}; // 收件人String[] ccs = {"", ""}; // 抄送String[] bccs = {"", ""}; // 密送intent.putExtra(Intent.EXTRA_EMAIL, tos);intent.putExtra(Intent.EXTRA_CC, ccs);intent.putExtra(Intent.EXTRA_BCC, bccs);intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");intent.putExtra(Intent.EXTRA_TEXT, "Hello");intent.setType("message/rfc822");startActivity(intent);[代码] 显示地图与路径规划// 打开Google地图中国北京位置(北纬39.9,东经116.3)Uri uri = Uri.parse("geo:39.9,116.3");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);// 路径规划:从北京某地(北纬39.9,东经116.3)到上海某地(北纬31.2,东经121.4)Uri uri = Uri.parse(" 116.3&daddr=31.2 121.4");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);[代码] 播放多媒体Intent intent = new Intent(Intent.ACTION_VIEW);Uri uri = Uri.parse("");intent.setDataAndType(uri, "audio/mp3");startActivity(intent);Uri uri = Uri.withAppendedPath(, "1");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);[代码] 拍照// 打开拍照程序Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 0);// 取出照片数据Bundle extras = intent.getExtras();Bitmap bitmap = (Bitmap) extras.get("data");[代码] 获取并剪切图片// 获取并剪切图片Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");intent.putExtra("crop", "true"); // 开启剪切intent.putExtra("aspectX", 1); // 剪切的宽高比为1:2intent.putExtra("aspectY", 2);intent.putExtra("outputX", 20); // 保存图片的宽和高intent.putExtra("outputY", 40);intent.putExtra("output", Uri.fromFile(new File("/mnt/sdcard/temp"))); // 保存路径intent.putExtra("outputFormat", "JPEG");// 返回格式startActivityForResult(intent, 0);// 剪切特定图片Intent intent = new Intent("");intent.setClassName("", "");intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp"))); intent.putExtra("outputX", 1); // 剪切的宽高比为1:2 intent.putExtra("outputY", 2);intent.putExtra("aspectX", 20); // 保存图片的宽和高intent.putExtra("aspectY", 40);intent.putExtra("scale", true);intent.putExtra("noFaceDetection", true);intent.putExtra("output", Uri.parse("")); startActivityForResult(intent, 0);[代码] 打开Google Market// 打开Google Market直接进入该程序的详细页面Uri uri = Uri.parse("" + "");Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);[代码] 安装和卸载程序Uri uri = Uri.fromParts("package", "", null);Intent intent = new Intent(Intent.ACTION_DELETE, uri); startActivity(intent);[代码] 进入设置界面// 进入无线网络设置界面(其它可以举一反三)Intent intent = new Intent(; startActivityForResult(intent, 0);。

详解Android中Intent的使用方法

详解Android中Intent的使用方法

详解Android中Intent的使⽤⽅法⼀、Intent的⽤途Intent主要有以下⼏种重要⽤途:1. 启动Activity:可以将Intent对象传递给startActivity()⽅法或startActivityForResult()⽅法以启动⼀个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。

2. 启动Service:可以将Intent对象传递给startService()⽅法或bindService()⽅法以启动⼀个Service,该Intent对象包含了要启动的Service的信息及其他必要的数据。

关于使⽤startService()⽅法启动Service,可以参见关于使⽤bindService()⽅法启动Service,可以参见3. 发送⼴播:⼴播是⼀种所有App都可以接收的信息。

Android系统会发布各种类型的⼴播,⽐如发布开机⼴播或⼿机充电⼴播等。

我们也可以给其他的App发送⼴播,可以将Intent对象传递给sendBroadcast()⽅法或sendOrderedBroadcast()⽅法或sendStickyBroadcast()⽅法以发送⾃定义⼴播。

⼆、Intent的类型有两种类型的Intent:explicit(显式)的和implict(隐式)的。

显式的Intent:如果Intent中明确包含了要启动的组件的完整类名(包名及类名),那么这个Intent就是explict的,即显式的。

使⽤显式Intent最典型的情形是在你⾃⼰的App中启动⼀个组件,因为你⾃⼰肯定知道⾃⼰的要启动的组件的类名。

⽐如,为了响应⽤户操作通过显式的Intent在你的App中启动⼀个Activity或启动⼀个Service下载⽂件。

隐式的Intent:如果Intent没有包含要启动的组件的完整类名,那么这个Intent就是implict的,即隐式的。

虽然隐式的Intent没有指定要启动的组件的类名,但是⼀般情况下,隐式的Intent都要指定需要执⾏的action。

intent原理及使用实验报告

intent原理及使用实验报告

intent原理及使用实验报告摘要:本实验报告主要介绍了intent的原理及其在Android开发中的使用。

通过实验,我们验证了intent在Android应用程序中的传递数据和启动其他组件的功能。

本文分为引言、实验设计、实验过程、实验结果、实验分析和结论六个部分。

1. 引言Intent是Android开发中的一个重要概念,用于在不同组件之间传递数据和启动其他组件。

Intent可以用来启动Activity、Service 和BroadcastReceiver等组件,也可以用来传递数据。

在Android 开发中,Intent被广泛使用,可以实现应用程序之间的交互和数据共享。

2. 实验设计本次实验的目的是验证intent在Android应用程序中的传递数据和启动其他组件的功能。

实验设计如下:(1)创建一个包含两个Activity的Android应用程序;(2)在第一个Activity中,通过Intent传递数据给第二个Activity;(3)在第二个Activity中,接收并显示传递的数据;(4)在第二个Activity中,通过Intent启动第一个Activity。

3. 实验过程(1)创建Android项目,并在AndroidManifest.xml文件中添加两个Activity的声明;(2)在第一个Activity中,创建一个按钮,点击按钮时触发事件;(3)在按钮的点击事件中,创建一个Intent对象,并通过putExtra()方法传递数据;(4)使用startActivity()方法启动第二个Activity;(5)在第二个Activity中,使用getIntent()方法获取传递的Intent对象,并通过getStringExtra()方法获取传递的数据;(6)在第二个Activity中,创建一个按钮,点击按钮时触发事件;(7)在按钮的点击事件中,创建一个Intent对象,并使用startActivity()方法启动第一个Activity。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

08.Android之Intent分类:Android开发2011-11-07 14:14 40人阅读评论(0) 收藏举报本来是自己想翻译这一部分的,网上搜了下,发现已经有好心人翻译好并发布出来了,而且允许转载,所以这里转载一下,去掉了原文头尾的一些内容:原文转自:/skynet/archive/2010/07/20/1781644.html作者:吴秦1、概述一个应用程序的三个核心组件——activities、services、broadcast receivers,都是通过叫做intents的消息激活。

Intent消息是一种同一或不同应用程序中的组件之间延迟运行时绑定的机制。

intent本身(是一个Intent对象),是一个被动的数据结构保存一个将要执行的操作的抽象描述,或在广播的情况下,通常是某事已经发生且正在宣告。

对于这三种组件,有独立的传送intent的机制:∙Activity:一个intent对象传递给Context.startActivity()或Activity.startActivityForRestult()去启动一个活动或使一个已存在的活动去做新的事情。

∙Service:一个intent对象传递给Context.startService()去初始化一个service或传递一个新的指令给正在运行的service。

类似的,一个intent可以传递给Context.bindService()去建立调用组件和目标服务之间的连接。

∙Broadcast Receiver:一个intent对象传递给任何广播方法(如Context.sendBroadcast(),Context.sendOrderedBroadcast(),Context.sendStickyBroadcast()),都将传递到所有感兴趣的广播接收者。

在每种情况下,Android系统查找合适的activity、service、broadcast receivers来响应意图,如果有必要的话,初始化他们。

这些消息系统之间没有重叠,即广播意图仅会传递给广播接收者,而不会传递活动或服务,反之亦然。

下面首先描述intent对象,然后介绍Android将intent映射到相应组件的规则——如何解决哪个组件应该接收intent消息。

对于没有指定目标组件名字的intent,这个处理过程包括按照intent filters匹配每个潜在的目标对象。

2、Intent对象一个Intent对象是一个捆信息,包含对intent有兴趣的组件的信息(如要执行的动作和要作用的数据)、Android系统有兴趣的信息(如处理intent组件的分类信息和如何启动目标活动的指令)。

下面列出它的主要信息:2.1、组件名字处理intent的组件的名字。

这个字段是一个ComponentName对象——是目标组件的完全限定类名(如"com.example.project.app.FreneticActivity")和应用程序所在的包在清单文件中的名字(如"com.example.project")的组合。

其中组件名字中的包部分不必一定和清单文件中的包名一样。

组件名字是可选的,如果设置了,intent对象传递到指定类的实例;如果没有设置,Android 使用intent中的其它信息来定位合适的目标组件(见下面的Intent解析)。

组件的名字通过setComponent(),setClass()或setClassName()设置,通过getComponent()读取。

2.2、动作一个字符串命名的动作将被执行,或在广播intent中,已发生动作且正被报告。

Intent类定义了一些动作常量,如下:查看更多的动作请参考Intent类。

其它的动作定义在Android API中,我们还可以定义自己的动作字符串一再我们的应用程序中激活组件。

自定义动作字符串应该包含应用程序报名前缀,如"com.example.project.SHOW_COLOR"。

动作很大程度上决定了剩下的intent如何构建,特别是数据(data)和附加(extras)字段,就像一个方法名决定了参数和返回值。

正是这个原因,应该尽可能明确指定动作,并紧密关联到其它intent字段。

换句话说,应该定义你的组件能够处理的Intent对象的整个协议,而不仅仅是单独地定义一个动作。

一个intent对象的动作通过setAction()方法设置,通过getAction()方法读取。

2.3、数据数据(data)是将作用于其上的数据的URI和数据的MIME类型。

不同的动作有不同的数据规格。

例如,如果动作字段是ACTION_EDIT,数据字段将包含将显示用于编辑的文档的URI;如果动作是ACTION_CALL,数据字段将是一个tel:URI和将拨打的号码;如果动作是ACTION_VIEW,数据字段是一个http:URI,接收活动将被调用去下载和显示URI指向的数据。

当匹配一个intent到一个能够处理数据的组件,通常知道数据的类型(它的MIME类型)和它的URI很重要。

例如,一个组件能够显示图像数据,不应该被调用去播放一个音频文件。

在许多情况下,数据类型能够从URI中推测,特别是content:URIs,它表示位于设备上的数据且被内容提供者(content provider)控制。

但是类型也能够显示地设置,setData()方法指定数据的URI,setType()指定MIME类型,setDataAndType()指定数据的URI和MIME 类型。

通过getData()读取URI,getType()读取类型。

2.4、种类此外,还包含关于应该处理intent的组件类型信息。

可以在一个Intent对象中指定任意数量的种类描述。

Intent类定义的一些种类常量,如下这些:更多的种类常量请参考Intent类。

addCategory()方法添加一个种类到Intent对象中,removeCategory()方法删除一个之前添加的种类,getCategories()方法获取Intent对象中的所有种类。

2.5、附加信息额外的键值对信息应该传递到组件处理intent。

就像动作关联的特定种类的数据URIs,也关联到某些特定的附加信息。

例如,一个ACTION_TIMEZONE_CHANGE intent有一个"time-zone"的附加信息,标识新的时区,ACTION_HEADSET_PLUG有一个"state"附加信息,标识头部现在是否塞满或未塞满;有一个"name"附加信息,标识头部的类型。

如果你自定义了一个SHOW_COLOR动作,颜色值将可以设置在附加的键值对中。

Intent对象有一系列的put…()方法用于插入各种附加数据和一系列的get…()用于读取数据。

这些方法与Bundle对象的方法类似,实际上,附加信息可以作为一个Bundle使用putExtras()和getExtras()安装和读取。

2.6、标志有各种各样的标志,许多指示Android系统如何去启动一个活动(例如,活动应该属于那个任务)和启动之后如何对待它(例如,它是否属于最近的活动列表)。

所有这些标志都定义在Intent类中。

3、Intent解析Intent可以分为两组:∙显式intent:通过名字指定目标组件。

因为开发者通常不知道其它应用程序的组件名字,显式intent通常用于应用程序内部消息,如一个活动启动从属的服务或启动一个姐妹活动。

∙隐式intent:并不指定目标的名字(组件名字字段是空的)。

隐式intent经常用于激活其它应用程序中的组件。

Android传递一个显式intent到一个指定目标类的实例。

Intent对象中只用组件名字内容去决定哪个组件应该获得这个intent,而不用其他内容。

隐式intent需要另外一种不同的策略。

由于缺省指定目标,Android系统必须查找一个最适合的组件(一些组件)去处理intent——一个活动或服务去执行请求动作,或一组广播接收者去响应广播声明。

这是通过比较Intent对象的内容和intent过滤器(intent filters)来完成的。

intent过滤器关联到潜在的接收intent的组件。

过滤器声明组件的能力和界定它能处理的intents,它们打开组件接收声明的intent类型的隐式intents。

如果一个组件没有任何intent过滤器,它仅能接收显示的intents,而声明了intent过滤器的组件可以接收显示和隐式的intents。

只有当一个Intent对象的下面三个方面都符合一个intent过滤器:action、data(包括URI 和数据类型)、category,才被考虑。

附加信息和标志在解析哪个组件接收intent中不起作用。

3.1、Intent过滤器活动、服务、广播接收者为了告知系统能够处理哪些隐式intent,它们可以有一个或多个intent过滤器。

每个过滤器描述组件的一种能力,即乐意接收的一组intent。

实际上,它筛掉不想要的intents,也仅仅是不想要的隐式intents。

一个显式intent总是能够传递到它的目标组件,不管它包含什么;不考虑过滤器。

但是一个隐式intent,仅当它能够通过组件的过滤器之一才能够传递给它。

一个组件的能够做的每一工作有独立的过滤器。

例如,记事本中的NoteEditer活动有两个过滤器,一个是启动一个指定的记录,用户可以查看和编辑;另一个是启动一个新的、空的记录,用户能够填充并保存。

一个intent过滤器是一个IntentFilter类的实例。

因为Android系统在启动一个组件之前必须知道它的能力,但是intent过滤器通常不在java代码中设置,而是在应用程序的清单文件(AndroidManifest.xml)中以<intent-filter>元素设置。

但有一个例外,广播接收者的过滤器通过调用Context.registerReceiver()动态地注册,它直接创建一个IntentFilter对象。

一个过滤器有对应于Intent对象的动作、数据、种类的字段。

过滤器要检测隐式intent的所有这三个字段,其中任何一个失败,Android系统都不会传递intent给组件。

然而,因为一个组件可以有多个intent过滤器,一个intent通不过组件的过滤器检测,其它的过滤器可能通过检测。

3.1.1、动作检测清单文件中的<intent-filter>元素以<action>子元素列出动作,例如:<intent-filter . . . ><action android:name="com.example.project.SHOW_CURRENT"/><action android:name="com.example.project.SHOW_RECENT"/><action android:name="com.example.project.SHOW_PENDING"/>. . .</intent-filter>像例子所展示,虽然一个Intent对象仅是单个动作,但是一个过滤器可以列出不止一个。

相关文档
最新文档