一、什么是Intent 一个意图是一个可以向组件 请求一个动作的 消息传递对象,即各组件使用Intent进行通信 。Intent促进组件之间的通信有这基本3个方面: 1.)启动Activity startActivity()或者startActivityForResult()来启动一个Activity 2.)启动Service startService()来初始化或者发送新的指令到正在运行的Service bindService()来实例化并且绑定Service
3.)发送Broadcast sendBroadcast(), sendOrderedBroadcast()或者sendStickyBroadcast().来发送广播到指定的BroadcastReceiver

二、显示Intent与隐式Intent的区别
显示Intent 通过组件的名称(组件的全类名)来指定目标的组件,在自己的应用程序中使用显示Intent启动一个组件,因为你知道你想要启动的Activity或者 Service的类名。 例如Activity启动其他的Activity或者Service,启动的组件只有一个。
隐式Intent 在启动组件的Intent中不指名组件的名称,而是指定Action、Data、 Category属性,然后当我们调用启动组件的方法时,就会 去AndroidManfiest.xml中相关组件的Intent-filter,逐一匹配出满足属性的组件。如果不止一个的话,会弹出让我们选择的对话框。
三、Intent的属性
ComponentName(组件名称)
即组件的名称,在AndroidManfiest.xml配置文件中设置的包名+组件的全限定类名组成,这是显式Intent需要的设置的唯一属性。 Intent中有setClass()、setClassName()、 setComponent()方法来设置,使用getComponent()方法获取
Action(动作)
一个普通的字符串,代表Intent要完成的一个抽象"动作" 比如发信息的权限,而具体的那个组件来完成,Intent并不负责,仅仅知道会有这个动作,谁来完成就交给Intent-filter进行筛选。 2种方式: 1.配置文件中 <action android:name="android.intent.action.CALL" /> 2.代码中 intent.setAction(Intent.ACTION_CALL);
Category(种类)
一个普通的字符串,为Action提供额外的类别信息,两者通常结合使用,一个Intent对象只能有一个Action,但能有多个Category
2种方式:
1.配置文件中
<category android:name="android.intent.category.
DEFAULT" />
2.代码中
intent.addCategory(Intent.CATEGORY_DEFAULT)
DATA(数据)
Data通常用于向Action属性提供操作的数据,接受一个URI对象。 URI格式:scheme://host:port/path 参数依次为:协议头、 主机、端口、路径
2种方式:
1.配置文件中
<data android:mimeType="Intent的Type属性" android:scheme="Data的scheme协议头" android:host="Data的主机号" android:port="Data的端口号" android:path="Data的路径" android:pathPrefix="Data的path前缀" android:pathPattern="Data属性的path的字符串模板" />
2.代码中
intent.setDataAndType(data, type);
Type(MIME类型)
Type通常用于指定Data所制定的Uri队友的MIME类型
Extras(额外)
通常用于多个Activity之间的数据交换,Extras的属性是一个 Bundle对象,通过键值对进行数据存储。
Flags(标记)
表示不同来源的标记,多数用于Android如何启动Activity以及启动后如何处理。 比如: intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)相当于加载模式中的singleTop模式。

四、Inten的使用
显示Intent的使用
1.返回Home界面
Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent);
2.打开链接地址
Intentintent= new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent);
3.启动Activity
Intentintent= new Intent(MainActivity.this,DemoActivity.class); startActivity(intent);
隐式Intent的使用

功能所有Action为VIEW的Activity被筛选出来,由用户进一步选择: 核心代码流程: 建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:
Intent it = new Intent(); it.setAction(Intent.ACTION_VIEW); startActivity(it);
最后在配置文件中添加以下代码:
<activity android:name=".SecondActivity" android:label="第二个Activity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>

更多相关文章

  1. Android以太网卡配置启动流程和双网卡同时支持的实现
  2. ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定
  3. android Activity面试启动流程分析
  4. Android(安卓)如何让悬浮窗口覆盖显示在导航栏之上?
  5. Android启动图3秒后自动跳转首页
  6. Android开发实践(一)我的第一个androidApp
  7. Android中intent启动Activity中intent.setFlags()的作用
  8. 详解 Android(安卓)的 Activity 组件——笔记
  9. android在PC端键盘启动手机上的应用的摸索

随机推荐

  1. 【Android(安卓)Training - Multimedia】
  2. android 打造变化多端的SeekBar(垂直和水
  3. Android热修复原理总结
  4. 从架构师的角度分析Android(安卓)Handler
  5. android 面试题汇总
  6. Android中添加万普广告墙、推送广告等
  7. Android(安卓)仿微信图片选择器
  8. Android开发实践(六)字符串实现DES加密
  9. android 实现主线程、子线程双向通信
  10. Android后台线程与UI线程交互(1)