脚本宝典收集整理的这篇文章主要介绍了Android入门篇(六)Intent详解,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在上一篇中,我们了解到,Intent实现跳转,需要设置一个target,就是找到对应ActivITy的一个标志。而这个标志可以是一个class,或者是一个Action。前者可以称之为显示跳转,而后者就是隐式的跳转了。
Intent可以启动Activity,启动Service,或者是发送一个广播信息。下面就介绍一下Intent的相关知识。
Intent相关属性
-
componentName(组件名称)
这个参数是用来为Intent显性的指定目标组件。一旦设置了ComponentName,AndROId会直接将Intent传递给组件名所指定的组件去启动它。如果没有设置ComponentName,那么该Intent就是隐式的,Android系统会根据其他的Intent的信息确定跳转到哪个组件。如果你启动一个自己App中的组件,可以通过显式调用。需要注意的是,当启动Service的时候,尽量指定Component Name。否则,就不能确定最终哪个App的哪个组件被启动了,并且用户也看不到哪个Service启动了。
ComponentName c = new ComponentName(FirstActivity.this,SecondActivity.class);
Intent intent1 = new Intent();
intent1.setComponent(c);
startActivity(intent);
@H_406_42@
标准的用法就是这样的,常规情况下我们不会写这么复杂,简写为
Intent intent1 = new Intent(FirstActivity.this,SecondActivity.class);
- Action
action是表示了要执行操作的字符串,代表Intent要完成的一个抽象“动作”。发送的这个操作Intent并不负责找到具体的组件,而是由intent-filter进行筛选。其对应着Intent Filter中的action标签<action />。
action需要在AndroidManifest.XMl中注册,下面给出一个样例
<activity android:name=".activity.FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
使用方法:
Intent intent = new Intent();
intent.setAction("view_learn");
startActivity(intent);
-
Category(类别)
Category是用来位Action提供额外的附加类别,两者通常会结合使用,一个Intent只能有一个Action但是可以有多个Category。当一个Intent设定了Category后,系统会根据Category寻找一组对应的组件,拥有这个Category属性的都会收到这个请求。
这个Category对应的组件,可以在AndroidManifest文件设定。
<category android_name="android.intent.category.launcher" />
在组件中的调用方式如下:
Intent i = new Intent();
i.addCategory(Intent.CATEGORY_APP_brOWSER);
startActivity(i);
-
Data(数据),Type(MIME类型)
Data通常用于Action属性提供操作的数据,接受一个URI对象;URI的格式通常为:scheme://host:port/path,参数的意义依次为:协议头,主机。端口,路径。
Type通常用于指定Data所制定的Uri对应的MIME类型,用于做一个限制,只允许通过MIME指定的数据。
这些属性都是在AndroidManifest文件中定义的,可以定义一个data标签,样式如下:
<data android:scheme="test"
android:host="test"
android:port="5678"
android:path="/test"/>
在另一个组件中的调用如下:
Intent i = new Intent();
i.setData(Uri.parse("test://test:5678/test"));
startActivity(i);
- Extras
通常用于多个组件之间的数据交换,Extras的属性是一个Bundle对象,通过键值对进行数据的存储。如果传递单个变量,可以通过putIntExtra()放置参数、通过getIntExtra()读取参数,也可以传递Bundle对象intent.putExtras()、通过getExtras()获取Bundle。
- Flags
主要是用于标记Activity的启动模式,常见的标记主要有以下几种:
标记
意义
FLAG_ACTIVITY_NEW_TASK
会创建一个新的Activity,相当于Activity启动模式的standard
FLAG_ACTIVITY_BROUGHT_TO_FRONT
如果栈中已有该Activity则直接将该Activity带到前台
FLAG_ACTIVITY_CLEAR_TOP
清除当前Activity之上的所有实例,该Flag相当于Activity启动模式中的singleTask
FLAG_ACTIVITY_SINGLE_TOP
Activity栈中只会存在一个实例,如果不在栈顶会直接带到栈顶
FLAG_ACTIVITY_NO_HISTORY
使用该标志时,启动的Activity不会保存在栈中
在Android的framework中也定义了一些常用的常量,这里整理一下。
常见的Activity Action Intent常量:
常量名称
常量值
意义
ACTION_MaiN
android.intent.action.MAIN
应用程序入口
ACTION_VIEW
android.intent.action.VIEW
显示数据给用户
ACTION_ATTACH_DATA
android.intent.action.ATTACH_DATA
指明附加信息给其他地方的一些数据
ACTION_EDIT
android.intent.action.EDIT
显示可编辑的数据
ACTION_PICK
android.intent.action.PICK
选择数据
ACTION_CHOOSER
android.intent.action.CHOOSER
显示一个Activity选择器
ACTION_GET_CONTENT
android.intent.action.GET_CONTENT
获得内容
ACTION_DIAL
android.intent.action.GET_CONTENT
显示打电话面板
ACITON_CALL
android.intent.action.DIAL
直接打电话
ACTION_SEND
android.intent.action.SEND
直接发短信
ACTION_SENDTO
android.intent.action.SENDTO
选择发短信
ACTION_ANSWER
android.intent.action.ANSWER
应答电话
ACTION_INSERT
android.intent.action.INSERT
插入数据
ACTION_DELETE
android.intent.action.DELETE
删除数据
ACTION_RUN
android.intent.action.RUN
运行数据
ACTION_SYNC
android.intent.action.SYNC
同步数据
ACTION_PICK_ACTIVITY
android.intent.action.PICK_ACTIVITY
选择Activity
ACTION_SEArch
android.intent.action.SEARCH
搜索
ACTION_WEB_SEARCH
android.intent.action.WEB_SEARCH
Web搜索
ACTION_FACTORY_TEST
android.intent.action.FACTORY_TEST
工厂测试入口点
常见的BroadcastIntent Action常量 BroadcastIntent
Action字符串常量
描述
ACTION_TIME_TICK
系统时间每过一分钟发出的广播
ACTION_TIME_CHANGED
系统时间通过设置发生了变化
ACTION_TIMEZONE_CHANGED
时区改变
ACTION_BOOT_completeD
系统启动完毕
ACTION_PACKAGE_ADDED
新的应用程序apk包安装完毕
ACTION_PACKAGE_CHANGED
现有应用程序apk包改变
ACTION_PACKAGE_REMOVED
现有应用程序apk包被删除
ACTION_UID_REMOVED
用户id被删除
Intent的Action和Data属性匹配
Action属性
Data属性
说明
ACTION_VIEW
content://contacts/people/1
显示id为1的联系人信息
ACTION_DIAL
content://contacts/people/1
将id为1的联系人电话号码显示在拨号界面中
ACITON_VIEW
tel:xxx
显示电话为xxx的联系人信息
ACTION_VIEW
http://xxx.xxx
在浏览器中浏览该网站
ACTION_VIEW
file://sdcard/xxx.mP3
播放MP3
ACTION_VIEW
geo:xxx,xxx
显示地图
常见的Category常量:
Category字符串常量
描述
CATEGORY_BROWSABLE
目标Activity能通过在网页浏览器中点击链接而激活(比如,点击浏览器中的图片链接)
CATEGORY_GADGET
表示目标Activity可以被内嵌到其他Activity当中
CATEGORY_HOME
目标Activity是HOME Activity,即手机开机启动后显示的Activity,或按下HOME键后显示的Activity
CATEGORY_LAUNCHER
表示目标Activity是应用程序中最优先被执行的Activity
CATEGORY_PREFERENCE
表示目标Activity是一个偏爱设置的Activity
常见的Extra常量:
Extra键值字符串常量
描述
EXTRA_BCC
装有邮件密送地址的字符串数组
EXTRA_CC
装有邮件抄送地址的字符串数组
EXTRA_EMAIL
装有邮件发送地址的字符串数组
EXTRA_INTENT
使用ACTION_PICK_ACTIVITY动作时装有Intent选项的键
EXTRA_KEY_EVENT
触发该Intent的案件的KeyEvent对象
EXTRA_PHONE_NUMBER
使用拨打电话相关的Action时,电话号码字符串的键,类型为String
EXTRA_SHORTCUT_ICON
使用ACTION_CREATE_SHORTCUT在HomeActivity创建快捷方式时,对快捷方式的描述信息。
EXTRA_TEXT
使用ACTION_SEND动作时,用来描述要发送的文本信息,类型为CharSequence
EXTRA_TITLE
使用ACTION_CHOOSER动作时,描述对话框标题的键,类型为CharSequence
EXTRA_UID
使用ACTION_UID_REMOVED动作时,描述删除的用户id的键,类型为int
Android.telephony包中的类:
类名
描述
CellLocation
表示设备位置的抽象类
PhoneNumberFormattingTextWather
监视一个TextView控件,如果有电话号码输入,则用formatNumber()方法处理电话号码
PhoneNumberUtils
包含各种处理电话号码字符串的使用工具
PhoneStateListener
监视手机中电话状态变化的监听类
ServiceState
包含电话状态和相关的服务信息
TelephonyManager
提供对手机中电话服务信息的访问
与短信服务相关的类主要在包android.telephony.gsm中
类名
描述
GsmCellLocation
表示GSM手机的基站位置
SmsManager
管理各种短信操作
SmsMessage
表示具体的短信
以上是脚本宝典为你收集整理的Android入门篇(六)Intent详解全部内容,希望文章能够帮你解决Android入门篇(六)Intent详解所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。